Built with doc-gen4, running Lean4. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓to navigate, Ctrl+🖱️to focus. On Mac, use Cmdinstead of Ctrl.
import Pretty.Supports.ResolvePareto
import Pretty.Supports.DocSize
import Pretty.Supports.MeasRender
import Pretty.Claims.Widen

/-!
## Validity theorems
-/

mutual 
  /--
  The validity theorem for non-tainted result (the first part of Theorem 5.8)
  -/
  theorem 
Resolve_valid: ∀ {α : Type} {F : Factory α} {d : Doc} {c i : } {ms : List Meas} {h : ms []} {D : List Doc} {m : Meas}, Resolve F d c i (MeasureSet.set ms h)Widen d Dm msd_choiceless, d_choiceless D MeasRender F d_choiceless c i m
Resolve_valid
(
h_print: Resolve F d c i (MeasureSet.set ms h)
h_print
:
Resolve: {α : Type} → Factory αDocMeasureSetProp
Resolve
F: ?m.4
F
d: ?m.11
d
c: ?m.17
c
i: ?m.23
i
(
MeasureSet.set: {α : Type} → (ms : List Meas) → ms []MeasureSet
MeasureSet.set
ms: ?m.32
ms
h: ?m.41
h
)) (
h_widen: Widen d D
h_widen
:
Widen: DocList DocProp
Widen
d: ?m.11
d
D: ?m.54
D
) (
h_m: m ms
h_m
:
m: ?m.81
m
ms: ?m.32
ms
) : ∃
d_choiceless: ?m.123
d_choiceless
,
d_choiceless: ?m.123
d_choiceless
D: ?m.54
D
MeasRender: {α : Type} → Factory αDocMeasProp
MeasRender
F: ?m.4
F
d_choiceless: ?m.123
d_choiceless
c: ?m.17
c
i: ?m.23
i
m: ?m.81
m
:=

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_print: Resolve F d c i (MeasureSet.set ms h)

h_widen: Widen d D

h_m: m ms


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_print: Resolve F d c i (MeasureSet.set ms h)

h_widen: Widen d D

h_m: m ms


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

s: String

h_print: Resolve F (Doc.text s) c i (MeasureSet.set ms h)

h_widen: Widen (Doc.text s) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_print: Resolve F d c i (MeasureSet.set ms h)

h_widen: Widen d D

h_m: m ms


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

D: List Doc

m: Meas

s: String

h_widen: Widen (Doc.text s) D

m✝: Meas

h_c✝: c + String.length s F.W

h_i✝: i F.W

h✝: MeasRender F (Doc.text s) c i m✝

h: [m✝] []

h_m: m [m✝]


text_set
d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

s: String

h_print: Resolve F (Doc.text s) c i (MeasureSet.set ms h)

h_widen: Widen (Doc.text s) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

D: List Doc

m: Meas

s: String

h_widen: Widen (Doc.text s) D

h_c✝: c + String.length s F.W

h_i✝: i F.W

h✝: MeasRender F (Doc.text s) c i m

h: [m] []

h_m: m [m]


text_set.refl
d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

s: String

h_print: Resolve F (Doc.text s) c i (MeasureSet.set ms h)

h_widen: Widen (Doc.text s) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

D: List Doc

m: Meas

s: String

h_widen: Widen (Doc.text s) D

h_c✝: c + String.length s F.W

h_i✝: i F.W

h✝: MeasRender F (Doc.text s) c i m

h: [m] []

h_m: m [m]


text_set.refl
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

s: String

h_print: Resolve F (Doc.text s) c i (MeasureSet.set ms h)

h_widen: Widen (Doc.text s) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

D: List Doc

m: Meas

s: String

h_widen: Widen (Doc.text s) D

h_c✝: c + String.length s F.W

h_i✝: i F.W

h✝: MeasRender F (Doc.text s) c i m

h: [m] []

h_m: m [m]


text_set.refl.left
α✝: Type

F: Factory α✝

d: Doc

c, i:

D: List Doc

m: Meas

s: String

h_widen: Widen (Doc.text s) D

h_c✝: c + String.length s F.W

h_i✝: i F.W

h✝: MeasRender F (Doc.text s) c i m

h: [m] []

h_m: m [m]


text_set.refl.right
MeasRender F (Doc.text s) c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

s: String

h_print: Resolve F (Doc.text s) c i (MeasureSet.set ms h)

h_widen: Widen (Doc.text s) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

D: List Doc

m: Meas

s: String

h_widen: Widen (Doc.text s) D

h_c✝: c + String.length s F.W

h_i✝: i F.W

h✝: MeasRender F (Doc.text s) c i m

h: [m] []

h_m: m [m]


α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

s: String

h_c✝: c + String.length s F.W

h_i✝: i F.W

h✝: MeasRender F (Doc.text s) c i m

h: [m] []

h_m: m [m]


text
α✝: Type

F: Factory α✝

d: Doc

c, i:

D: List Doc

m: Meas

s: String

h_widen: Widen (Doc.text s) D

h_c✝: c + String.length s F.W

h_i✝: i F.W

h✝: MeasRender F (Doc.text s) c i m

h: [m] []

h_m: m [m]



Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

s: String

h_print: Resolve F (Doc.text s) c i (MeasureSet.set ms h)

h_widen: Widen (Doc.text s) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

D: List Doc

m: Meas

s: String

h_widen: Widen (Doc.text s) D

h_c✝: c + String.length s F.W

h_i✝: i F.W

h✝: MeasRender F (Doc.text s) c i m

h: [m] []

h_m: m [m]


MeasRender F (Doc.text s) c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_print: Resolve F d c i (MeasureSet.set ms h)

h_widen: Widen d D

h_m: m ms


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

h_print: Resolve F Doc.nl c i (MeasureSet.set ms h)

h_widen: Widen Doc.nl D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_print: Resolve F d c i (MeasureSet.set ms h)

h_widen: Widen d D

h_m: m ms


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

D: List Doc

m: Meas

h_widen: Widen Doc.nl D

m✝: Meas

h_c✝: c F.W

h_i✝: i F.W

h✝: MeasRender F Doc.nl c i m✝

h: [m✝] []

h_m: m [m✝]


line_set
d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

h_print: Resolve F Doc.nl c i (MeasureSet.set ms h)

h_widen: Widen Doc.nl D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

D: List Doc

m: Meas

h_widen: Widen Doc.nl D

h_c✝: c F.W

h_i✝: i F.W

h✝: MeasRender F Doc.nl c i m

h: [m] []

h_m: m [m]


line_set.refl
d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

h_print: Resolve F Doc.nl c i (MeasureSet.set ms h)

h_widen: Widen Doc.nl D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

D: List Doc

m: Meas

h_widen: Widen Doc.nl D

h_c✝: c F.W

h_i✝: i F.W

h✝: MeasRender F Doc.nl c i m

h: [m] []

h_m: m [m]


line_set.refl
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

h_print: Resolve F Doc.nl c i (MeasureSet.set ms h)

h_widen: Widen Doc.nl D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

D: List Doc

m: Meas

h_widen: Widen Doc.nl D

h_c✝: c F.W

h_i✝: i F.W

h✝: MeasRender F Doc.nl c i m

h: [m] []

h_m: m [m]


line_set.refl.left
α✝: Type

F: Factory α✝

d: Doc

c, i:

D: List Doc

m: Meas

h_widen: Widen Doc.nl D

h_c✝: c F.W

h_i✝: i F.W

h✝: MeasRender F Doc.nl c i m

h: [m] []

h_m: m [m]


line_set.refl.right
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

h_print: Resolve F Doc.nl c i (MeasureSet.set ms h)

h_widen: Widen Doc.nl D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

D: List Doc

m: Meas

h_widen: Widen Doc.nl D

h_c✝: c F.W

h_i✝: i F.W

h✝: MeasRender F Doc.nl c i m

h: [m] []

h_m: m [m]


α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

h_c✝: c F.W

h_i✝: i F.W

h✝: MeasRender F Doc.nl c i m

h: [m] []

h_m: m [m]


nl
α✝: Type

F: Factory α✝

d: Doc

c, i:

D: List Doc

m: Meas

h_widen: Widen Doc.nl D

h_c✝: c F.W

h_i✝: i F.W

h✝: MeasRender F Doc.nl c i m

h: [m] []

h_m: m [m]



Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

h_print: Resolve F Doc.nl c i (MeasureSet.set ms h)

h_widen: Widen Doc.nl D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

D: List Doc

m: Meas

h_widen: Widen Doc.nl D

h_c✝: c F.W

h_i✝: i F.W

h✝: MeasRender F Doc.nl c i m

h: [m] []

h_m: m [m]



Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_print: Resolve F d c i (MeasureSet.set ms h)

h_widen: Widen d D

h_m: m ms


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

n:

d': Doc

h_print: Resolve F (Doc.nest n d') c i (MeasureSet.set ms h)

h_widen: Widen (Doc.nest n d') D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_print: Resolve F d c i (MeasureSet.set ms h)

h_widen: Widen d D

h_m: m ms


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms✝: List Meas

h: ms✝ []

D: List Doc

m: Meas

h_m: m ms✝

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

ms: MeasureSet

h_gen: MeasureSet.set ms✝ h = ms

h_print: Resolve F (Doc.nest n d') c i ms


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

n:

d': Doc

h_print: Resolve F (Doc.nest n d') c i (MeasureSet.set ms h)

h_widen: Widen (Doc.nest n d') D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

ms✝: MeasureSet

h✝: Resolve F d' c (i + n) ms✝

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_nest n) ms✝


nest
d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

n:

d': Doc

h_print: Resolve F (Doc.nest n d') c i (MeasureSet.set ms h)

h_widen: Widen (Doc.nest n d') D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

ms': MeasureSet

h': Resolve F d' c (i + n) ms'

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_nest n) ms'


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

m✝: Meas

h': Resolve F d' c (i + n) (MeasureSet.tainted m✝)

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_nest n) (MeasureSet.tainted m✝)


tainted
d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c (i + n) (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_nest n) (MeasureSet.set ms✝ h✝)


set
d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

ms': MeasureSet

h': Resolve F d' c (i + n) ms'

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_nest n) ms'


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

m✝: Meas

h': Resolve F d' c (i + n) (MeasureSet.tainted m✝)

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_nest n) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

ms': MeasureSet

h': Resolve F d' c (i + n) ms'

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_nest n) ms'


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c (i + n) (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_nest n) (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c (i + n) (MeasureSet.set ms✝ h✝)

h_gen: ms = List.map (Meas.adjust_nest n) ms✝


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c (i + n) (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_nest n) (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

D: List Doc

m: Meas

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c (i + n) (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_nest n) ms✝ []

h_m: m List.map (Meas.adjust_nest n) ms✝


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c (i + n) (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_nest n) (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

n:

d': Doc

ms✝: List Meas

h✝¹: ms✝ []

h': Resolve F d' c (i + n) (MeasureSet.set ms✝ h✝¹)

h: List.map (Meas.adjust_nest n) ms✝ []

h_m: m List.map (Meas.adjust_nest n) ms✝

L✝: List Doc

h✝: Widen d' L✝


nest
d_choiceless, d_choiceless List.map (fun d => Doc.nest n d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c (i + n) (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_nest n) (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

n:

d': Doc

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c (i + n) (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_nest n) ms✝ []

h_m: m List.map (Meas.adjust_nest n) ms✝

L✝: List Doc

h_widen: Widen d' L✝


d_choiceless, d_choiceless List.map (fun d => Doc.nest n d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

n:

d': Doc

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c (i + n) (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_nest n) ms✝ []

L✝: List Doc

h_widen: Widen d' L✝

h_m: a, a ms✝ Meas.adjust_nest n a = m


d_choiceless, d_choiceless List.map (fun d => Doc.nest n d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

n:

d': Doc

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c (i + n) (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_nest n) ms✝ []

h_m: m List.map (Meas.adjust_nest n) ms✝

L✝: List Doc

h_widen: Widen d' L✝


d_choiceless, d_choiceless List.map (fun d => Doc.nest n d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

n:

d': Doc

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c (i + n) (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_nest n) ms✝ []

L✝: List Doc

h_widen: Widen d' L✝

h_m: a, a ms✝ Meas.adjust_nest n a = m

m': Meas

h_left: m' ms✝

h_right: Meas.adjust_nest n m' = m


d_choiceless, d_choiceless List.map (fun d => Doc.nest n d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

n:

d': Doc

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c (i + n) (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_nest n) ms✝ []

h_m: m List.map (Meas.adjust_nest n) ms✝

L✝: List Doc

h_widen: Widen d' L✝


d_choiceless, d_choiceless List.map (fun d => Doc.nest n d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

n:

d'✝: Doc

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d'✝ c (i + n) (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_nest n) ms✝ []

L✝: List Doc

h_widen: Widen d'✝ L✝

h_m: a, a ms✝ Meas.adjust_nest n a = m

m': Meas

h_left: m' ms✝

h_right: Meas.adjust_nest n m' = m

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c (i + n) m'


d_choiceless, d_choiceless List.map (fun d => Doc.nest n d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

n:

d': Doc

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c (i + n) (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_nest n) ms✝ []

h_m: m List.map (Meas.adjust_nest n) ms✝

L✝: List Doc

h_widen: Widen d' L✝


d_choiceless, d_choiceless List.map (fun d => Doc.nest n d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

n:

d'✝: Doc

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d'✝ c (i + n) (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_nest n) ms✝ []

L✝: List Doc

h_widen: Widen d'✝ L✝

h_m: a, a ms✝ Meas.adjust_nest n a = m

m': Meas

h_left: m' ms✝

h_right: Meas.adjust_nest n m' = m

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c (i + n) m'


Doc.nest n d' List.map (fun d => Doc.nest n d) L✝ MeasRender F (Doc.nest n d') c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

n:

d': Doc

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c (i + n) (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_nest n) ms✝ []

h_m: m List.map (Meas.adjust_nest n) ms✝

L✝: List Doc

h_widen: Widen d' L✝


d_choiceless, d_choiceless List.map (fun d => Doc.nest n d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

n:

d'✝: Doc

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d'✝ c (i + n) (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_nest n) ms✝ []

L✝: List Doc

h_widen: Widen d'✝ L✝

h_m: a, a ms✝ Meas.adjust_nest n a = m

m': Meas

h_left: m' ms✝

h_right: Meas.adjust_nest n m' = m

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c (i + n) m'


MeasRender F (Doc.nest n d') c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

n:

d': Doc

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c (i + n) (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_nest n) ms✝ []

h_m: m List.map (Meas.adjust_nest n) ms✝

L✝: List Doc

h_widen: Widen d' L✝


d_choiceless, d_choiceless List.map (fun d => Doc.nest n d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i, n:

d'✝: Doc

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d'✝ c (i + n) (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_nest n) ms✝ []

L✝: List Doc

h_widen: Widen d'✝ L✝

m': Meas

h_left: m' ms✝

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c (i + n) m'

h_m: a, a ms✝ Meas.adjust_nest n a = Meas.adjust_nest n m'


α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

n:

d': Doc

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c (i + n) (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_nest n) ms✝ []

h_m: m List.map (Meas.adjust_nest n) ms✝

L✝: List Doc

h_widen: Widen d' L✝


d_choiceless, d_choiceless List.map (fun d => Doc.nest n d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i, n:

d'✝: Doc

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d'✝ c (i + n) (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_nest n) ms✝ []

L✝: List Doc

h_widen: Widen d'✝ L✝

m': Meas

h_left: m' ms✝

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c (i + n) m'

h_m: a, a ms✝ Meas.adjust_nest n a = Meas.adjust_nest n m'

this: m'.doc = d'


α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

n:

d': Doc

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c (i + n) (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_nest n) ms✝ []

h_m: m List.map (Meas.adjust_nest n) ms✝

L✝: List Doc

h_widen: Widen d' L✝


d_choiceless, d_choiceless List.map (fun d => Doc.nest n d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i, n:

d': Doc

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c (i + n) (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_nest n) ms✝ []

L✝: List Doc

h_widen: Widen d' L✝

m': Meas

h_left: m' ms✝

h_m: a, a ms✝ Meas.adjust_nest n a = Meas.adjust_nest n m'

h_in: m'.doc L✝

h_render: MeasRender F m'.doc c (i + n) m'


MeasRender F (Doc.nest n m'.doc) c i (Meas.adjust_nest n m')
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

n:

d': Doc

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c (i + n) (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_nest n) ms✝ []

h_m: m List.map (Meas.adjust_nest n) ms✝

L✝: List Doc

h_widen: Widen d' L✝


d_choiceless, d_choiceless List.map (fun d => Doc.nest n d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i, n:

d': Doc

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c (i + n) (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_nest n) ms✝ []

L✝: List Doc

h_widen: Widen d' L✝

m': Meas

h_left: m' ms✝

h_m: a, a ms✝ Meas.adjust_nest n a = Meas.adjust_nest n m'

h_in: m'.doc L✝

h_render: MeasRender F m'.doc c (i + n) m'


h
MeasRender F m'.doc c (i + n) { last := (Meas.adjust_nest n m').last, cost := (Meas.adjust_nest n m').cost, doc := m'.doc, x := (Meas.adjust_nest n m').x, y := (Meas.adjust_nest n m').y }
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

n:

d': Doc

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c (i + n) (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_nest n) ms✝ []

h_m: m List.map (Meas.adjust_nest n) ms✝

L✝: List Doc

h_widen: Widen d' L✝


d_choiceless, d_choiceless List.map (fun d => Doc.nest n d) L✝ MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_print: Resolve F d c i (MeasureSet.set ms h)

h_widen: Widen d D

h_m: m ms


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d': Doc

h_print: Resolve F (Doc.align d') c i (MeasureSet.set ms h)

h_widen: Widen (Doc.align d') D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_print: Resolve F d c i (MeasureSet.set ms h)

h_widen: Widen d D

h_m: m ms


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms✝: List Meas

h: ms✝ []

D: List Doc

m: Meas

h_m: m ms✝

d': Doc

h_widen: Widen (Doc.align d') D

ms: MeasureSet

h_gen: MeasureSet.set ms✝ h = ms

h_print: Resolve F (Doc.align d') c i ms


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d': Doc

h_print: Resolve F (Doc.align d') c i (MeasureSet.set ms h)

h_widen: Widen (Doc.align d') D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d': Doc

h_widen: Widen (Doc.align d') D

ms✝: MeasureSet

h✝: Resolve F d' c c ms✝

h_bad✝: i > F.W

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint ms✝)


align_taint
d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d': Doc

h_widen: Widen (Doc.align d') D

ms✝: MeasureSet

h✝: Resolve F d' c c ms✝

h_ok✝: i F.W

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_align i) ms✝


align
d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d': Doc

h_print: Resolve F (Doc.align d') c i (MeasureSet.set ms h)

h_widen: Widen (Doc.align d') D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d': Doc

h_widen: Widen (Doc.align d') D

ms': MeasureSet

h': Resolve F d' c c ms'

h_ok✝: i F.W

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_align i) ms'


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.tainted m✝)


tainted
d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c c (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.set ms✝ h✝)


set
d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d': Doc

h_widen: Widen (Doc.align d') D

ms': MeasureSet

h': Resolve F d' c c ms'

h_ok✝: i F.W

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_align i) ms'


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d': Doc

h_widen: Widen (Doc.align d') D

ms': MeasureSet

h': Resolve F d' c c ms'

h_ok✝: i F.W

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_align i) ms'


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c c (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c c (MeasureSet.set ms✝ h✝)

h_gen: ms = List.map (Meas.adjust_align i) ms✝


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c c (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

D: List Doc

m: Meas

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c c (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_align i) ms✝ []

h_m: m List.map (Meas.adjust_align i) ms✝


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c c (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

h_ok✝: i F.W

ms✝: List Meas

h✝¹: ms✝ []

h': Resolve F d' c c (MeasureSet.set ms✝ h✝¹)

h: List.map (Meas.adjust_align i) ms✝ []

h_m: m List.map (Meas.adjust_align i) ms✝

L✝: List Doc

h✝: Widen d' L✝


align
d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c c (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c c (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_align i) ms✝ []

h_m: m List.map (Meas.adjust_align i) ms✝

L✝: List Doc

h_widen: Widen d' L✝


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c c (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_align i) ms✝ []

L✝: List Doc

h_widen: Widen d' L✝

h_m: a, a ms✝ Meas.adjust_align i a = m


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c c (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_align i) ms✝ []

h_m: m List.map (Meas.adjust_align i) ms✝

L✝: List Doc

h_widen: Widen d' L✝


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c c (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_align i) ms✝ []

L✝: List Doc

h_widen: Widen d' L✝

h_m: a, a ms✝ Meas.adjust_align i a = m

m': Meas

h_left: m' ms✝

h_right: Meas.adjust_align i m' = m


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c c (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_align i) ms✝ []

h_m: m List.map (Meas.adjust_align i) ms✝

L✝: List Doc

h_widen: Widen d' L✝


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d'✝: Doc

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d'✝ c c (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_align i) ms✝ []

L✝: List Doc

h_widen: Widen d'✝ L✝

h_m: a, a ms✝ Meas.adjust_align i a = m

m': Meas

h_left: m' ms✝

h_right: Meas.adjust_align i m' = m

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c c m'


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c c (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_align i) ms✝ []

h_m: m List.map (Meas.adjust_align i) ms✝

L✝: List Doc

h_widen: Widen d' L✝


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d'✝: Doc

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d'✝ c c (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_align i) ms✝ []

L✝: List Doc

h_widen: Widen d'✝ L✝

h_m: a, a ms✝ Meas.adjust_align i a = m

m': Meas

h_left: m' ms✝

h_right: Meas.adjust_align i m' = m

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c c m'


Doc.align d' List.map (fun d => Doc.align d) L✝ MeasRender F (Doc.align d') c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c c (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_align i) ms✝ []

h_m: m List.map (Meas.adjust_align i) ms✝

L✝: List Doc

h_widen: Widen d' L✝


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d'✝: Doc

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d'✝ c c (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_align i) ms✝ []

L✝: List Doc

h_widen: Widen d'✝ L✝

h_m: a, a ms✝ Meas.adjust_align i a = m

m': Meas

h_left: m' ms✝

h_right: Meas.adjust_align i m' = m

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c c m'


MeasRender F (Doc.align d') c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c c (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_align i) ms✝ []

h_m: m List.map (Meas.adjust_align i) ms✝

L✝: List Doc

h_widen: Widen d' L✝


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

d'✝: Doc

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d'✝ c c (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_align i) ms✝ []

L✝: List Doc

h_widen: Widen d'✝ L✝

m': Meas

h_left: m' ms✝

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c c m'

h_m: a, a ms✝ Meas.adjust_align i a = Meas.adjust_align i m'


α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c c (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_align i) ms✝ []

h_m: m List.map (Meas.adjust_align i) ms✝

L✝: List Doc

h_widen: Widen d' L✝


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

d'✝: Doc

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d'✝ c c (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_align i) ms✝ []

L✝: List Doc

h_widen: Widen d'✝ L✝

m': Meas

h_left: m' ms✝

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c c m'

h_m: a, a ms✝ Meas.adjust_align i a = Meas.adjust_align i m'

this: m'.doc = d'


α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c c (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_align i) ms✝ []

h_m: m List.map (Meas.adjust_align i) ms✝

L✝: List Doc

h_widen: Widen d' L✝


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c c (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_align i) ms✝ []

L✝: List Doc

h_widen: Widen d' L✝

m': Meas

h_left: m' ms✝

h_m: a, a ms✝ Meas.adjust_align i a = Meas.adjust_align i m'

h_in: m'.doc L✝

h_render: MeasRender F m'.doc c c m'


MeasRender F (Doc.align m'.doc) c i (Meas.adjust_align i m')
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c c (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_align i) ms✝ []

h_m: m List.map (Meas.adjust_align i) ms✝

L✝: List Doc

h_widen: Widen d' L✝


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c c (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_align i) ms✝ []

L✝: List Doc

h_widen: Widen d' L✝

m': Meas

h_left: m' ms✝

h_m: a, a ms✝ Meas.adjust_align i a = Meas.adjust_align i m'

h_in: m'.doc L✝

h_render: MeasRender F m'.doc c c m'


h
MeasRender F m'.doc c c { last := (Meas.adjust_align i m').last, cost := (Meas.adjust_align i m').cost, doc := m'.doc, x := (Meas.adjust_align i m').x, y := m'.y }
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c c (MeasureSet.set ms✝ h✝)

h: List.map (Meas.adjust_align i) ms✝ []

h_m: m List.map (Meas.adjust_align i) ms✝

L✝: List Doc

h_widen: Widen d' L✝


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d': Doc

h_print: Resolve F (Doc.align d') c i (MeasureSet.set ms h)

h_widen: Widen (Doc.align d') D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d': Doc

h_widen: Widen (Doc.align d') D

ms': MeasureSet

h✝: Resolve F d' c c ms'

h_bad✝: i > F.W

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint ms')


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d': Doc

h_widen: Widen (Doc.align d') D

h_bad✝: i > F.W

m✝: Meas

h✝: Resolve F d' c c (MeasureSet.tainted m✝)

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint (MeasureSet.tainted m✝))


tainted
d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d': Doc

h_widen: Widen (Doc.align d') D

h_bad✝: i > F.W

ms✝: List Meas

h✝¹: ms✝ []

h✝: Resolve F d' c c (MeasureSet.set ms✝ h✝¹)

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint (MeasureSet.set ms✝ h✝¹))


set
d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d': Doc

h_widen: Widen (Doc.align d') D

ms': MeasureSet

h✝: Resolve F d' c c ms'

h_bad✝: i > F.W

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint ms')


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d': Doc

h_widen: Widen (Doc.align d') D

h_bad✝: i > F.W

m✝: Meas

h✝: Resolve F d' c c (MeasureSet.tainted m✝)

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint (MeasureSet.tainted m✝))


tainted
d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d': Doc

h_widen: Widen (Doc.align d') D

h_bad✝: i > F.W

ms✝: List Meas

h✝¹: ms✝ []

h✝: Resolve F d' c c (MeasureSet.set ms✝ h✝¹)

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint (MeasureSet.set ms✝ h✝¹))


set
d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d': Doc

h_widen: Widen (Doc.align d') D

ms': MeasureSet

h✝: Resolve F d' c c ms'

h_bad✝: i > F.W

h_gen: MeasureSet.set ms h = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint ms')


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_print: Resolve F d c i (MeasureSet.set ms h)

h_widen: Widen d D

h_m: m ms


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d₁, d₂: Doc

h_print: Resolve F (Doc.choice d₁ d₂) c i (MeasureSet.set ms h)

h_widen: Widen (Doc.choice d₁ d₂) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_print: Resolve F d c i (MeasureSet.set ms h)

h_widen: Widen d D

h_m: m ms


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms✝: List Meas

h: ms✝ []

D: List Doc

m: Meas

h_m: m ms✝

d₁, d₂: Doc

h_widen: Widen (Doc.choice d₁ d₂) D

ms: MeasureSet

h_gen: MeasureSet.set ms✝ h = ms

h_print: Resolve F (Doc.choice d₁ d₂) c i ms


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d₁, d₂: Doc

h_print: Resolve F (Doc.choice d₁ d₂) c i (MeasureSet.set ms h)

h_widen: Widen (Doc.choice d₁ d₂) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms✝: List Meas

h: ms✝ []

m: Meas

h_m: m ms✝

d₁, d₂: Doc

ms: MeasureSet

h_gen: MeasureSet.set ms✝ h = ms

h_print: Resolve F (Doc.choice d₁ d₂) c i ms

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝


choice
d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d₁, d₂: Doc

h_print: Resolve F (Doc.choice d₁ d₂) c i (MeasureSet.set ms h)

h_widen: Widen (Doc.choice d₁ d₂) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms✝: List Meas

h: ms✝ []

m: Meas

h_m: m ms✝

d₁, d₂: Doc

ms: MeasureSet

h_gen: MeasureSet.set ms✝ h = ms

h_print: Resolve F (Doc.choice d₁ d₂) c i ms

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms✝, ms'✝: MeasureSet

h_left✝: Resolve F d₁ c i ms✝

h_right✝: Resolve F d₂ c i ms'✝

h_gen: MeasureSet.set ms h = MeasureSet.union F ms✝ ms'✝


choice
d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms✝: List Meas

h: ms✝ []

m: Meas

h_m: m ms✝

d₁, d₂: Doc

ms: MeasureSet

h_gen: MeasureSet.set ms✝ h = ms

h_print: Resolve F (Doc.choice d₁ d₂) c i ms

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms₁, ms₂: MeasureSet

h₁: Resolve F d₁ c i ms₁

h₂: Resolve F d₂ c i ms₂

h_gen: MeasureSet.set ms h = MeasureSet.union F ms₁ ms₂


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms₂: MeasureSet

h₂: Resolve F d₂ c i ms₂

m✝: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.tainted m✝) ms₂


tainted
d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms₂: MeasureSet

h₂: Resolve F d₂ c i ms₂

ms✝: List Meas

h✝: ms✝ []

h₁: Resolve F d₁ c i (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.set ms✝ h✝) ms₂


set
d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms₁, ms₂: MeasureSet

h₁: Resolve F d₁ c i ms₁

h₂: Resolve F d₂ c i ms₂

h_gen: MeasureSet.set ms h = MeasureSet.union F ms₁ ms₂


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms₂: MeasureSet

h₂: Resolve F d₂ c i ms₂

m✝: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.tainted m✝) ms₂


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms₂: MeasureSet

h₂: Resolve F d₂ c i ms₂

m✝: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.tainted m✝) ms₂


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.tainted m✝¹) (MeasureSet.tainted m✝)


tainted
d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝)

ms✝: List Meas

h✝: ms✝ []

h₂: Resolve F d₂ c i (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.tainted m✝) (MeasureSet.set ms✝ h✝)


set
d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝)

ms✝: List Meas

h✝: ms✝ []

h₂: Resolve F d₂ c i (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.tainted m✝) (MeasureSet.set ms✝ h✝)


set
d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms₂: MeasureSet

h₂: Resolve F d₂ c i ms₂

m✝: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.tainted m✝) ms₂


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝)

ms✝: List Meas

h✝: ms✝ []

h₂: Resolve F d₂ c i (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.tainted m✝) (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝)

ms✝: List Meas

h✝: ms✝ []

h₂: Resolve F d₂ c i (MeasureSet.set ms✝ h✝)

h_gen: ms = ms✝


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝)

ms✝: List Meas

h✝: ms✝ []

h₂: Resolve F d₂ c i (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.tainted m✝) (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝)

ms✝: List Meas

h✝: ms✝ []

h₂: Resolve F d₂ c i (MeasureSet.set ms✝ h✝)

h_gen: ms = ms✝


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝)

ms✝: List Meas

h✝: ms✝ []

h₂: Resolve F d₂ c i (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.tainted m✝) (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝)

h✝: ms []

h₂: Resolve F d₂ c i (MeasureSet.set ms h✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝)

ms✝: List Meas

h✝: ms✝ []

h₂: Resolve F d₂ c i (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.tainted m✝) (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h✝¹: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝)

h✝: ms []

h₂: Resolve F d₂ c i (MeasureSet.set ms h✝)

d_choiceless: Doc

h: d_choiceless L₂✝ MeasRender F d_choiceless c i m


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝)

ms✝: List Meas

h✝: ms✝ []

h₂: Resolve F d₂ c i (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.tainted m✝) (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h✝¹: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝)

h✝: ms []

h₂: Resolve F d₂ c i (MeasureSet.set ms h✝)

d_choiceless: Doc

h: d_choiceless L₂✝ MeasRender F d_choiceless c i m


d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝)

ms✝: List Meas

h✝: ms✝ []

h₂: Resolve F d₂ c i (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.tainted m✝) (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms₁, ms₂: MeasureSet

h₁: Resolve F d₁ c i ms₁

h₂: Resolve F d₂ c i ms₂

h_gen: MeasureSet.set ms h = MeasureSet.union F ms₁ ms₂


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms₂: MeasureSet

h₂: Resolve F d₂ c i ms₂

ms': List Meas

h✝: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.set ms' h✝) ms₂


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝)

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.set ms' h✝) (MeasureSet.tainted m✝)


tainted
d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝¹: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝¹)

ms✝: List Meas

h✝: ms✝ []

h₂: Resolve F d₂ c i (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.set ms' h✝¹) (MeasureSet.set ms✝ h✝)


set
d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms₂: MeasureSet

h₂: Resolve F d₂ c i ms₂

ms': List Meas

h✝: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.set ms' h✝) ms₂


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝)

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.set ms' h✝) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝)

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h_gen: ms = ms'


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝)

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.set ms' h✝) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝)

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h_gen: ms = ms'


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝)

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.set ms' h✝) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h✝: ms []

h₁: Resolve F d₁ c i (MeasureSet.set ms h✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝)

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.set ms' h✝) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h✝¹: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h✝: ms []

h₁: Resolve F d₁ c i (MeasureSet.set ms h✝)

d_choiceless: Doc

h: d_choiceless L₁✝ MeasRender F d_choiceless c i m


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝)

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.set ms' h✝) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h✝¹: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h✝: ms []

h₁: Resolve F d₁ c i (MeasureSet.set ms h✝)

d_choiceless: Doc

h: d_choiceless L₁✝ MeasRender F d_choiceless c i m


d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝)

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.set ms' h✝) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms₂: MeasureSet

h₂: Resolve F d₂ c i ms₂

ms': List Meas

h✝: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.set ms' h✝) ms₂


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝¹: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝¹)

ms'': List Meas

h✝: ms'' []

h₂: Resolve F d₂ c i (MeasureSet.set ms'' h✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.set ms' h✝¹) (MeasureSet.set ms'' h✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝¹: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝¹)

ms'': List Meas

h✝: ms'' []

h₂: Resolve F d₂ c i (MeasureSet.set ms'' h✝)

h_gen: ms = merge F (ms', ms'')


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝¹: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝¹)

ms'': List Meas

h✝: ms'' []

h₂: Resolve F d₂ c i (MeasureSet.set ms'' h✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.set ms' h✝¹) (MeasureSet.set ms'' h✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝¹: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝¹)

ms'': List Meas

h✝: ms'' []

h₂: Resolve F d₂ c i (MeasureSet.set ms'' h✝)

h: merge F (ms', ms'') []

h_m: m merge F (ms', ms'')


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝¹: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝¹)

ms'': List Meas

h✝: ms'' []

h₂: Resolve F d₂ c i (MeasureSet.set ms'' h✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.set ms' h✝¹) (MeasureSet.set ms'' h✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝¹: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝¹)

ms'': List Meas

h✝: ms'' []

h₂: Resolve F d₂ c i (MeasureSet.set ms'' h✝)

h: merge F (ms', ms'') []

h_m: m ms' m ms''


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝¹: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝¹)

ms'': List Meas

h✝: ms'' []

h₂: Resolve F d₂ c i (MeasureSet.set ms'' h✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.set ms' h✝¹) (MeasureSet.set ms'' h✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝²: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝²)

ms'': List Meas

h✝¹: ms'' []

h₂: Resolve F d₂ c i (MeasureSet.set ms'' h✝¹)

h: merge F (ms', ms'') []

h✝: m ms'


inl
d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝²: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝²)

ms'': List Meas

h✝¹: ms'' []

h₂: Resolve F d₂ c i (MeasureSet.set ms'' h✝¹)

h: merge F (ms', ms'') []

h✝: m ms''


inr
d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝¹: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝¹)

ms'': List Meas

h✝: ms'' []

h₂: Resolve F d₂ c i (MeasureSet.set ms'' h✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.set ms' h✝¹) (MeasureSet.set ms'' h✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝¹: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝¹)

ms'': List Meas

h✝: ms'' []

h₂: Resolve F d₂ c i (MeasureSet.set ms'' h✝)

h: merge F (ms', ms'') []

h_m: m ms'


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝²: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝²)

ms'': List Meas

h✝¹: ms'' []

h₂: Resolve F d₂ c i (MeasureSet.set ms'' h✝¹)

h: merge F (ms', ms'') []

h_m: m ms'

d_choiceless: Doc

h✝: d_choiceless L₁✝ MeasRender F d_choiceless c i m


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝¹: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝¹)

ms'': List Meas

h✝: ms'' []

h₂: Resolve F d₂ c i (MeasureSet.set ms'' h✝)

h: merge F (ms', ms'') []

h_m: m ms'


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝²: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝²)

ms'': List Meas

h✝¹: ms'' []

h₂: Resolve F d₂ c i (MeasureSet.set ms'' h✝¹)

h: merge F (ms', ms'') []

h_m: m ms'

d_choiceless: Doc

h✝: d_choiceless L₁✝ MeasRender F d_choiceless c i m


d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝¹: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝¹)

ms'': List Meas

h✝: ms'' []

h₂: Resolve F d₂ c i (MeasureSet.set ms'' h✝)

h: merge F (ms', ms'') []

h_m: m ms'


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝¹: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝¹)

ms'': List Meas

h✝: ms'' []

h₂: Resolve F d₂ c i (MeasureSet.set ms'' h✝)

h_gen: MeasureSet.set ms h = MeasureSet.union F (MeasureSet.set ms' h✝¹) (MeasureSet.set ms'' h✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝¹: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝¹)

ms'': List Meas

h✝: ms'' []

h₂: Resolve F d₂ c i (MeasureSet.set ms'' h✝)

h: merge F (ms', ms'') []

h_m: m ms''


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝²: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝²)

ms'': List Meas

h✝¹: ms'' []

h₂: Resolve F d₂ c i (MeasureSet.set ms'' h✝¹)

h: merge F (ms', ms'') []

h_m: m ms''

d_choiceless: Doc

h✝: d_choiceless L₂✝ MeasRender F d_choiceless c i m


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝¹: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝¹)

ms'': List Meas

h✝: ms'' []

h₂: Resolve F d₂ c i (MeasureSet.set ms'' h✝)

h: merge F (ms', ms'') []

h_m: m ms''


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝²: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝²)

ms'': List Meas

h✝¹: ms'' []

h₂: Resolve F d₂ c i (MeasureSet.set ms'' h✝¹)

h: merge F (ms', ms'') []

h_m: m ms''

d_choiceless: Doc

h✝: d_choiceless L₂✝ MeasRender F d_choiceless c i m


d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝¹: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝¹)

ms'': List Meas

h✝: ms'' []

h₂: Resolve F d₂ c i (MeasureSet.set ms'' h✝)

h: merge F (ms', ms'') []

h_m: m ms''


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_print: Resolve F d c i (MeasureSet.set ms h)

h_widen: Widen d D

h_m: m ms


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d₁, d₂: Doc

h_print: Resolve F (Doc.concat d₁ d₂) c i (MeasureSet.set ms h)

h_widen: Widen (Doc.concat d₁ d₂) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_print: Resolve F d c i (MeasureSet.set ms h)

h_widen: Widen d D

h_m: m ms


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

h_print: Resolve F (Doc.concat d₁ d₂) c i (MeasureSet.set ms h)

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝


concat
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d₁, d₂: Doc

h_print: Resolve F (Doc.concat d₁ d₂) c i (MeasureSet.set ms h)

h_widen: Widen (Doc.concat d₁ d₂) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

D: List Doc

m: Meas

h_m: m ms

d₁, d₂: Doc

h_print: Resolve F (Doc.concat d₁ d₂) c i (MeasureSet.set ms h)

h_widen: Widen (Doc.concat d₁ d₂) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.h_right
ResolveConcat F ?concat.concat_set.ms ?concat.concat_set.d₂ i (MeasureSet.set ?concat.concat_set.ms_r ?concat.concat_set.h_non_empty_r)
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.h_widen₁
Widen ?concat.concat_set.d₁ L₁✝
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.h_widen₂
Widen ?concat.concat_set.d₂ L₂✝
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.h_left
Resolve F ?concat.concat_set.d₁ c i (MeasureSet.set ?concat.concat_set.orig_ms ?concat.concat_set.h_non_empty)
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.h_transfer
∀ (x : Meas), x ?concat.concat_set.msx ?concat.concat_set.orig_ms
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.h_m
m ?concat.concat_set.ms_r
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.ms
List Meas
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.d₂
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.ms_r
List Meas
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.h_non_empty_r
?concat.concat_set.ms_r []
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.d₁
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.orig_ms
List Meas
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.h_non_empty
?concat.concat_set.orig_ms []
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.h_right
ResolveConcat F ?concat.concat_set.ms ?concat.concat_set.d₂ i (MeasureSet.set ?concat.concat_set.ms_r ?concat.concat_set.h_non_empty_r)
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.h_widen₁
Widen ?concat.concat_set.d₁ L₁✝
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.h_widen₂
Widen ?concat.concat_set.d₂ L₂✝
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.h_left
Resolve F ?concat.concat_set.d₁ c i (MeasureSet.set ?concat.concat_set.orig_ms ?concat.concat_set.h_non_empty)
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.h_transfer
∀ (x : Meas), x ?concat.concat_set.msx ?concat.concat_set.orig_ms
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.h_m
m ?concat.concat_set.ms_r
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.ms
List Meas
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.d₂
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.ms_r
List Meas
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.h_non_empty_r
?concat.concat_set.ms_r []
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.d₁
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.orig_ms
List Meas
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.h_non_empty
?concat.concat_set.orig_ms []
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.h_m
m ms

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

ms: List Meas

h: ms []

m: Meas

h_m: m ms

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.set ms h)


concat.concat_set.h_m
m ms

Goals accomplished! 🐙
theorem
ResolveConcat_valid: ∀ {α : Type} {F : Factory α} {ms : List Meas} {d₂ : Doc} {i : } {ms_r : List Meas} {h_non_empty_r : ms_r []} {d₁ : Doc} {L₁ L₂ : List Doc} {c : } {orig_ms : List Meas} {h_non_empty : orig_ms []} (m : Meas), ResolveConcat F ms d₂ i (MeasureSet.set ms_r h_non_empty_r)Widen d₁ L₁Widen d₂ L₂Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)(∀ (x : Meas), x msx orig_ms) → m ms_rd_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
ResolveConcat_valid
(
m: Meas
m
:
Meas: {α : Type} → Type
Meas
) (
h_right: ResolveConcat F ms d₂ i (MeasureSet.set ms_r h_non_empty_r)
h_right
:
ResolveConcat: {α : Type} → Factory αList MeasDocMeasureSetProp
ResolveConcat
F: ?m.150
F
ms: ?m.160
ms
d₂: ?m.170
d₂
i: ?m.179
i
(
MeasureSet.set: {α : Type} → (ms : List Meas) → ms []MeasureSet
MeasureSet.set
ms_r: ?m.191
ms_r
h_non_empty_r: ?m.202
h_non_empty_r
)) (
h_widen₁: Widen d₁ L₁
h_widen₁
:
Widen: DocList DocProp
Widen
d₁: ?m.218
d₁
L₁: ?m.231
L₁
) (
h_widen₂: Widen d₂ L₂
h_widen₂
:
Widen: DocList DocProp
Widen
d₂: ?m.170
d₂
L₂: ?m.246
L₂
) (
h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)
h_left
:
Resolve: {α : Type} → Factory αDocMeasureSetProp
Resolve
F: ?m.150
F
d₁: ?m.218
d₁
c: ?m.264
c
i: ?m.179
i
(
MeasureSet.set: {α : Type} → (ms : List Meas) → ms []MeasureSet
MeasureSet.set
orig_ms: ?m.284
orig_ms
h_non_empty: ?m.304
h_non_empty
)) (
h_transfer: ∀ (x : Meas), x msx orig_ms
h_transfer
: ∀
x: ?m.326
x
,
x: ?m.326
x
ms: ?m.160
ms
x: ?m.326
x
orig_ms: ?m.284
orig_ms
) (
h_m: m ms_r
h_m
:
m: Meas
m
ms_r: ?m.191
ms_r
) : ∃
d_choiceless: ?m.407
d_choiceless
,
d_choiceless: ?m.407
d_choiceless
List.join: {α : Type ?u.414} → List (List α)List α
List.join
(
List.map: {α : Type ?u.417} → {β : Type ?u.416} → (αβ) → List αList β
List.map
(fun
d₁: ?m.422
d₁
=>
List.map: {α : Type ?u.425} → {β : Type ?u.424} → (αβ) → List αList β
List.map
(fun
d₂: ?m.430
d₂
=>
Doc.concat: DocDocDoc
Doc.concat
d₁: ?m.422
d₁
d₂: ?m.430
d₂
)
L₂: ?m.246
L₂
)
L₁: ?m.231
L₁
) ∧
MeasRender: {α : Type} → Factory αDocMeasProp
MeasRender
F: ?m.150
F
d_choiceless: ?m.407
d_choiceless
c: ?m.264
c
i: ?m.179
i
m: Meas
m
:=

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_right: ResolveConcat F ms d₂ i (MeasureSet.set ms_r h_non_empty_r)

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_transfer: ∀ (x : Meas), x msx orig_ms

h_m: m ms_r


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_transfer: ∀ (x : Meas), x msx orig_ms

h_m: m ms_r

ml: MeasureSet

h_ml: MeasureSet.set ms_r h_non_empty_r = ml

h_right: ResolveConcat F ms d₂ i ml


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_right: ResolveConcat F ms d₂ i (MeasureSet.set ms_r h_non_empty_r)

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_transfer: ∀ (x : Meas), x msx orig_ms

h_m: m ms_r


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_transfer: ∀ (x : Meas), x msx orig_ms

h_m: m ms_r

ml: MeasureSet

h_ml: MeasureSet.set ms_r h_non_empty_r = ml

h_right: ResolveConcat F ms d₂ i ml


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

ml: MeasureSet

h_ml: MeasureSet.set ms_r h_non_empty_r = ml

h_transfer: ∀ (x : Meas), x []x orig_ms

h_right: ResolveConcat F [] d₂ i ml


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_transfer: ∀ (x : Meas), x msx orig_ms

h_m: m ms_r

ml: MeasureSet

h_ml: MeasureSet.set ms_r h_non_empty_r = ml

h_right: ResolveConcat F ms d₂ i ml


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_transfer: ∀ (x : Meas), x msx orig_ms

h_m: m ms_r

ml: MeasureSet

h_ml: MeasureSet.set ms_r h_non_empty_r = ml

h_right: ResolveConcat F ms d₂ i ml


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

ml: MeasureSet

h_ml: MeasureSet.set ms_r h_non_empty_r = ml

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

h_right: ResolveConcat F [m₀] d₂ i ml


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_transfer: ∀ (x : Meas), x msx orig_ms

h_m: m ms_r

ml: MeasureSet

h_ml: MeasureSet.set ms_r h_non_empty_r = ml

h_right: ResolveConcat F ms d₂ i ml


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

ml: MeasureSet

h_ml: MeasureSet.set ms_r h_non_empty_r = ml

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

h_current✝: ResolveConcatOne F d₂ m₀ i ml


one
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

msr✝, msr'✝: MeasureSet

h_current✝: ResolveConcatOne F d₂ m₀ i msr'✝

h_rest✝: ResolveConcat F [] d₂ i msr✝

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F msr'✝ msr✝


cons
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

ml: MeasureSet

h_ml: MeasureSet.set ms_r h_non_empty_r = ml

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

h_right: ResolveConcat F [m₀] d₂ i ml


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

msr✝, msr'✝: MeasureSet

h_current✝: ResolveConcatOne F d₂ m₀ i msr'✝

h_rest✝: ResolveConcat F [] d₂ i msr✝

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F msr'✝ msr✝


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

ml: MeasureSet

h_ml: MeasureSet.set ms_r h_non_empty_r = ml

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

h_right: ResolveConcat F [m₀] d₂ i ml


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

ml: MeasureSet

h_ml: MeasureSet.set ms_r h_non_empty_r = ml

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

h_current: ResolveConcatOne F d₂ m₀ i ml


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

m'✝: Meas

h✝: Resolve F d₂ m₀.last i (MeasureSet.tainted m'✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.tainted (Meas.concat F m₀ m'✝)


tainted
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h✝: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.set (dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝)) (_ : dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) [])


set
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

ml: MeasureSet

h_ml: MeasureSet.set ms_r h_non_empty_r = ml

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

h_current: ResolveConcatOne F d₂ m₀ i ml


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

m'✝: Meas

h✝: Resolve F d₂ m₀.last i (MeasureSet.tainted m'✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.tainted (Meas.concat F m₀ m'✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

ml: MeasureSet

h_ml: MeasureSet.set ms_r h_non_empty_r = ml

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

h_current: ResolveConcatOne F d₂ m₀ i ml


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.set (dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝)) (_ : dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) [])


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) []

h_m: m dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝)


refl
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.set (dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝)) (_ : dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) [])


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) []

h_m: m List.map (fun m' => Meas.concat F m₀ m') ms✝


refl
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.set (dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝)) (_ : dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) [])


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₀ a = m


refl
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.set (dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝)) (_ : dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) [])


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₀ a = m

m_right: Meas

h_in_right: m_right ms✝

right✝: Meas.concat F m₀ m_right = m


refl
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.set (dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝)) (_ : dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) [])


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₀ a = m

m_right: Meas

h_in_right: m_right ms✝

right✝: Meas.concat F m₀ m_right = m


refl
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₀ a = m

m_right: Meas

h_in_right: m_right ms✝

right✝: Meas.concat F m₀ m_right = m


m₀ orig_ms
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₀ a = m

m_right: Meas

h_in_right: m_right ms✝

right✝: Meas.concat F m₀ m_right = m


a
m₀ [m₀]
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₀ a = m

m_right: Meas

h_in_right: m_right ms✝

right✝: Meas.concat F m₀ m_right = m


m₀ orig_ms

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.set (dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝)) (_ : dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) [])


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₀ a = m

m_right: Meas

h_in_right: m_right ms✝

right✝¹: Meas.concat F m₀ m_right = m

h_in_left: m₀ orig_ms

d_choiceless_left: Doc

left✝: d_choiceless_left L₁

right✝: MeasRender F d_choiceless_left c i m₀


refl.intro.intro
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.set (dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝)) (_ : dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) [])


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₀ a = m

m_right: Meas

h_in_right: m_right ms✝

right✝²: Meas.concat F m₀ m_right = m

h_in_left: m₀ orig_ms

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₀

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₀.last i m_right


refl.intro.intro
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.set (dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝)) (_ : dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) [])


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₀ a = m

m_right: Meas

h_in_right: m_right ms✝

right✝²: Meas.concat F m₀ m_right = m

h_in_left: m₀ orig_ms

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₀

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₀.last i m_right


refl.intro.intro
Doc.concat d_choiceless_left d_choiceless_right List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F (Doc.concat d_choiceless_left d_choiceless_right) c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.set (dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝)) (_ : dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) [])


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₀ a = m

m_right: Meas

h_in_right: m_right ms✝

right✝²: Meas.concat F m₀ m_right = m

h_in_left: m₀ orig_ms

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₀

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₀.last i m_right


refl.intro.intro
MeasRender F (Doc.concat d_choiceless_left d_choiceless_right) c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.set (dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝)) (_ : dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) [])


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₀ a = m

m_right: Meas

h_in_right: m_right ms✝

right✝²: Meas.concat F m₀ m_right = m

h_in_left: m₀ orig_ms

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₀

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₀.last i m_right


refl.intro.intro.h₁
MeasRender F d_choiceless_left c i ?refl.intro.intro.m₁
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₀ a = m

m_right: Meas

h_in_right: m_right ms✝

right✝²: Meas.concat F m₀ m_right = m

h_in_left: m₀ orig_ms

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₀

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₀.last i m_right


refl.intro.intro.h₂
MeasRender F d_choiceless_right ?refl.intro.intro.m₁.last i ?refl.intro.intro.m₂
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₀ a = m

m_right: Meas

h_in_right: m_right ms✝

right✝²: Meas.concat F m₀ m_right = m

h_in_left: m₀ orig_ms

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₀

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₀.last i m_right


refl.intro.intro.h
m = Meas.concat F ?refl.intro.intro.m₁ ?refl.intro.intro.m₂
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₀ a = m

m_right: Meas

h_in_right: m_right ms✝

right✝²: Meas.concat F m₀ m_right = m

h_in_left: m₀ orig_ms

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₀

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₀.last i m_right


refl.intro.intro.m₁
Meas
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₀ a = m

m_right: Meas

h_in_right: m_right ms✝

right✝²: Meas.concat F m₀ m_right = m

h_in_left: m₀ orig_ms

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₀

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₀.last i m_right


refl.intro.intro.m₂
Meas
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.set (dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝)) (_ : dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) [])


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₀ a = m

m_right: Meas

h_in_right: m_right ms✝

right✝²: Meas.concat F m₀ m_right = m

h_in_left: m₀ orig_ms

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₀

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₀.last i m_right


MeasRender F d_choiceless_left c i ?refl.intro.intro.m₁

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.set (dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝)) (_ : dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) [])


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₀ a = m

m_right: Meas

h_in_right: m_right ms✝

right✝²: Meas.concat F m₀ m_right = m

h_in_left: m₀ orig_ms

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₀

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₀.last i m_right


m = Meas.concat F m₀ m_right
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₀ a = m

m_right: Meas

h_in_right: m_right ms✝

right✝²: Meas.concat F m₀ m_right = m

h_in_left: m₀ orig_ms

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₀

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₀.last i m_right


Meas.concat F m₀ m_right = m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₀ a = m

m_right: Meas

h_in_right: m_right ms✝

right✝²: Meas.concat F m₀ m_right = m

h_in_left: m₀ orig_ms

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₀

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₀.last i m_right


Meas.concat F m₀ m_right = m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₀: Meas

h_transfer: ∀ (x : Meas), x [m₀]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h_right: Resolve F d₂ m₀.last i (MeasureSet.set ms✝ h_non_empty✝)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₀ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₀ a = m

m_right: Meas

h_in_right: m_right ms✝

right✝²: Meas.concat F m₀ m_right = m

h_in_left: m₀ orig_ms

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₀

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₀.last i m_right


m = Meas.concat F m₀ m_right

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_transfer: ∀ (x : Meas), x msx orig_ms

h_m: m ms_r

ml: MeasureSet

h_ml: MeasureSet.set ms_r h_non_empty_r = ml

h_right: ResolveConcat F ms d₂ i ml


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

ml: MeasureSet

h_ml: MeasureSet.set ms_r h_non_empty_r = ml

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

h_right: ResolveConcat F (m₁ :: m₂ :: tl) d₂ i ml


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_transfer: ∀ (x : Meas), x msx orig_ms

h_m: m ms_r

ml: MeasureSet

h_ml: MeasureSet.set ms_r h_non_empty_r = ml

h_right: ResolveConcat F ms d₂ i ml


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

msr✝, msr'✝: MeasureSet

h_current✝: ResolveConcatOne F d₂ m₁ i msr'✝

h_rest✝: ResolveConcat F (m₂ :: tl) d₂ i msr✝

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F msr'✝ msr✝


cons
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

ml: MeasureSet

h_ml: MeasureSet.set ms_r h_non_empty_r = ml

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

h_right: ResolveConcat F (m₁ :: m₂ :: tl) d₂ i ml


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

msr, msr': MeasureSet

h_current: ResolveConcatOne F d₂ m₁ i msr'

h_rest: ResolveConcat F (m₂ :: tl) d₂ i msr

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F msr' msr


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

msr': MeasureSet

h_current: ResolveConcatOne F d₂ m₁ i msr'

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F msr' (MeasureSet.tainted m✝)


tainted
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

msr': MeasureSet

h_current: ResolveConcatOne F d₂ m₁ i msr'

ms✝: List Meas

h✝: ms✝ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝ h✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F msr' (MeasureSet.set ms✝ h✝)


set
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

msr, msr': MeasureSet

h_current: ResolveConcatOne F d₂ m₁ i msr'

h_rest: ResolveConcat F (m₂ :: tl) d₂ i msr

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F msr' msr


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

msr': MeasureSet

h_current: ResolveConcatOne F d₂ m₁ i msr'

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F msr' (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝¹: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝¹)

m✝: Meas

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.tainted m✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F (MeasureSet.tainted m✝) (MeasureSet.tainted m✝¹)


tainted
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F (MeasureSet.set ms✝ h✝) (MeasureSet.tainted m✝)


set
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

msr': MeasureSet

h_current: ResolveConcatOne F d₂ m₁ i msr'

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F msr' (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝¹: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝¹)

m✝: Meas

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.tainted m✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F (MeasureSet.tainted m✝) (MeasureSet.tainted m✝¹)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

msr': MeasureSet

h_current: ResolveConcatOne F d₂ m₁ i msr'

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F msr' (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F (MeasureSet.set ms✝ h✝) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_ml: ms_r = ms✝


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F (MeasureSet.set ms✝ h✝) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

h✝: ms_r []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms_r h✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F (MeasureSet.set ms✝ h✝) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty✝: ms✝ []

h✝¹: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty✝)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []


set
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F (MeasureSet.set ms✝ h✝) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r, h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: m List.map (fun m' => Meas.concat F m₁ m') ms✝


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r, h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₁ a = m


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r, h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₁ a = m

m_right: Meas

h_in: m_right ms✝

right✝: Meas.concat F m₁ m_right = m


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r, h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₁ a = m

m_right: Meas

h_in: m_right ms✝

right✝: Meas.concat F m₁ m_right = m


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r, h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₁ a = m

m_right: Meas

h_in: m_right ms✝

right✝: Meas.concat F m₁ m_right = m


?m.87122 orig_ms
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r, h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₁ a = m

m_right: Meas

h_in: m_right ms✝

right✝: Meas.concat F m₁ m_right = m


?m.87122 orig_ms
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r, h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₁ a = m

m_right: Meas

h_in: m_right ms✝

right✝: Meas.concat F m₁ m_right = m


?m.87122 orig_ms
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r, h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₁ a = m

m_right: Meas

h_in: m_right ms✝

right✝: Meas.concat F m₁ m_right = m


a
?m.87122 m₁ :: m₂ :: tl
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r, h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₁ a = m

m_right: Meas

h_in: m_right ms✝

right✝: Meas.concat F m₁ m_right = m


?m.87122 orig_ms

Goals accomplished! 🐙

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r, h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₁ a = m

m_right: Meas

h_in: m_right ms✝

right✝: Meas.concat F m₁ m_right = m

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r, h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₁ a = m

m_right: Meas

h_in: m_right ms✝

right✝¹: Meas.concat F m₁ m_right = m

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝: d_choiceless_left L₁

right✝: MeasRender F d_choiceless_left c i m₁


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r, h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₁ a = m

m_right: Meas

h_in: m_right ms✝

right✝²: Meas.concat F m₁ m_right = m

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₁

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i m_right


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r, h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₁ a = m

m_right: Meas

h_in: m_right ms✝

right✝²: Meas.concat F m₁ m_right = m

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₁

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i m_right


Doc.concat d_choiceless_left d_choiceless_right List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F (Doc.concat d_choiceless_left d_choiceless_right) c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r, h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₁ a = m

m_right: Meas

h_in: m_right ms✝

right✝²: Meas.concat F m₁ m_right = m

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₁

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i m_right


MeasRender F (Doc.concat d_choiceless_left d_choiceless_right) c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r, h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₁ a = m

m_right: Meas

h_in: m_right ms✝

right✝²: Meas.concat F m₁ m_right = m

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₁

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i m_right


h₁
MeasRender F d_choiceless_left c i ?m₁
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r, h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₁ a = m

m_right: Meas

h_in: m_right ms✝

right✝²: Meas.concat F m₁ m_right = m

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₁

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i m_right


h₂
MeasRender F d_choiceless_right ?m₁.last i ?m₂
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r, h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₁ a = m

m_right: Meas

h_in: m_right ms✝

right✝²: Meas.concat F m₁ m_right = m

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₁

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i m_right


h
m = Meas.concat F ?m₁ ?m₂
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r, h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₁ a = m

m_right: Meas

h_in: m_right ms✝

right✝²: Meas.concat F m₁ m_right = m

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₁

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i m_right


m₁
Meas
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r, h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₁ a = m

m_right: Meas

h_in: m_right ms✝

right✝²: Meas.concat F m₁ m_right = m

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₁

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i m_right


m₂
Meas
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r, h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₁ a = m

m_right: Meas

h_in: m_right ms✝

right✝²: Meas.concat F m₁ m_right = m

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₁

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i m_right


MeasRender F d_choiceless_right m₁.last i ?m₂

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r, h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₁ a = m

m_right: Meas

h_in: m_right ms✝

right✝²: Meas.concat F m₁ m_right = m

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₁

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i m_right


m = Meas.concat F m₁ m_right
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r, h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₁ a = m

m_right: Meas

h_in: m_right ms✝

right✝²: Meas.concat F m₁ m_right = m

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₁

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i m_right


Meas.concat F m₁ m_right = m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r, h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₁ a = m

m_right: Meas

h_in: m_right ms✝

right✝²: Meas.concat F m₁ m_right = m

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₁

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i m_right


Meas.concat F m₁ m_right = m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h_non_empty_r, h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_m: a, a ms✝ Meas.concat F m₁ a = m

m_right: Meas

h_in: m_right ms✝

right✝²: Meas.concat F m₁ m_right = m

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₁

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i m_right


m = Meas.concat F m₁ m_right

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

msr, msr': MeasureSet

h_current: ResolveConcatOne F d₂ m₁ i msr'

h_rest: ResolveConcat F (m₂ :: tl) d₂ i msr

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F msr' msr


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

msr': MeasureSet

h_current: ResolveConcatOne F d₂ m₁ i msr'

ms✝: List Meas

h✝: ms✝ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝ h✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F msr' (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝: List Meas

h✝: ms✝ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝ h✝)

m✝: Meas

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.tainted m✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F (MeasureSet.tainted m✝) (MeasureSet.set ms✝ h✝)


tainted
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F (MeasureSet.set ms✝ h✝) (MeasureSet.set ms✝¹ h✝¹)


set
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

msr': MeasureSet

h_current: ResolveConcatOne F d₂ m₁ i msr'

ms✝: List Meas

h✝: ms✝ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝ h✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F msr' (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝: List Meas

h✝: ms✝ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝ h✝)

m✝: Meas

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.tainted m✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F (MeasureSet.tainted m✝) (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝: List Meas

h✝: ms✝ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝ h✝)

m✝: Meas

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.tainted m✝)

h_ml: ms_r = ms✝


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝: List Meas

h✝: ms✝ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝ h✝)

m✝: Meas

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.tainted m✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F (MeasureSet.tainted m✝) (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.tainted m✝)

h✝: ms_r []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms_r h✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝: List Meas

h✝: ms✝ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝ h✝)

m✝: Meas

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.tainted m✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F (MeasureSet.tainted m✝) (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.tainted m✝)

h✝: ms_r []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms_r h✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.tainted m✝)

h✝: ms_r []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms_r h✝)


∀ (x : Meas), x m₂ :: tlx orig_ms
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.tainted m✝)

h✝: ms_r []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms_r h✝)


∀ (x : Meas), x m₂ :: tlx orig_ms
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.tainted m✝)

h✝: ms_r []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms_r h✝)


∀ (x : Meas), x m₂ :: tlx orig_ms
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.tainted m✝)

h✝: ms_r []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms_r h✝)

x✝: Meas

a✝: x✝ m₂ :: tl


x✝ orig_ms
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.tainted m✝)

h✝: ms_r []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms_r h✝)


∀ (x : Meas), x m₂ :: tlx orig_ms
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.tainted m✝)

h✝: ms_r []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms_r h✝)

x✝: Meas

a✝: x✝ m₂ :: tl


a
x✝ m₁ :: m₂ :: tl
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.tainted m✝)

h✝: ms_r []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms_r h✝)


∀ (x : Meas), x m₂ :: tlx orig_ms
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.tainted m✝)

h✝: ms_r []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms_r h✝)

x✝: Meas

a✝: x✝ m₂ :: tl


a.a
List.Mem x✝ (m₂ :: tl)
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.tainted m✝)

h✝: ms_r []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms_r h✝)


∀ (x : Meas), x m₂ :: tlx orig_ms

Goals accomplished! 🐙

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

m✝: Meas

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.tainted m✝)

h✝¹: ms_r []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms_r h✝¹)

d_choiceless: Doc

h✝: d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝: List Meas

h✝: ms✝ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝ h✝)

m✝: Meas

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.tainted m✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F (MeasureSet.tainted m✝) (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

msr': MeasureSet

h_current: ResolveConcatOne F d₂ m₁ i msr'

ms✝: List Meas

h✝: ms✝ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝ h✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F msr' (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F (MeasureSet.set ms✝ h✝) (MeasureSet.set ms✝¹ h✝¹)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_ml: ms_r = merge F (ms✝, ms✝¹)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F (MeasureSet.set ms✝ h✝) (MeasureSet.set ms✝¹ h✝¹)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_non_empty_r: merge F (ms✝, ms✝¹) []

h_m: m merge F (ms✝, ms✝¹)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F (MeasureSet.set ms✝ h✝) (MeasureSet.set ms✝¹ h✝¹)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝²: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝²)

ms✝: List Meas

h✝¹: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝¹)

h_non_empty_r: merge F (ms✝, ms✝¹) []

h_m: m merge F (ms✝, ms✝¹)

h✝: m ms✝


inl
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝²: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝²)

ms✝: List Meas

h✝¹: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝¹)

h_non_empty_r: merge F (ms✝, ms✝¹) []

h_m: m merge F (ms✝, ms✝¹)

h✝: m ms✝¹


inr
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F (MeasureSet.set ms✝ h✝) (MeasureSet.set ms✝¹ h✝¹)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_non_empty_r: merge F (ms✝, ms✝¹) []

h_m: m merge F (ms✝, ms✝¹)

h_d: m ms✝


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝²: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝²)

ms✝: List Meas

h_non_empty✝: ms✝ []

h✝¹: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty✝)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

h_d: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)


set
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_non_empty_r: merge F (ms✝, ms✝¹) []

h_m: m merge F (ms✝, ms✝¹)

h_d: m ms✝


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

h_d: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

h_d: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

h_d: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)


?m.108998 orig_ms
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

h_d: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)


?m.108998 orig_ms
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

h_d: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)


?m.108998 orig_ms
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

h_d: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)


a
?m.108998 m₁ :: m₂ :: tl
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

h_d: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)


?m.108998 orig_ms

Goals accomplished! 🐙

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

h_d: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

h_d: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

h_d: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝: d_choiceless_left L₁

right✝: MeasRender F d_choiceless_left c i m₁


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

h_d: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝: d_choiceless_left L₁

right✝: MeasRender F d_choiceless_left c i m₁

h_d: m List.map (fun m' => Meas.concat F m₁ m') ms✝


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

h_d: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝: d_choiceless_left L₁

right✝: MeasRender F d_choiceless_left c i m₁

h_d: a, a ms✝ Meas.concat F m₁ a = m


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

h_d: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝: d_choiceless_left L₁

right✝¹: MeasRender F d_choiceless_left c i m₁

h_d: a, a ms✝ Meas.concat F m₁ a = m

w✝: Meas

h_star: w✝ ms✝

right✝: Meas.concat F m₁ w✝ = m


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

h_d: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝²: MeasRender F d_choiceless_left c i m₁

h_d: a, a ms✝ Meas.concat F m₁ a = m

w✝: Meas

h_star: w✝ ms✝

right✝¹: Meas.concat F m₁ w✝ = m

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i w✝


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

h_d: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝²: MeasRender F d_choiceless_left c i m₁

h_d: a, a ms✝ Meas.concat F m₁ a = m

w✝: Meas

h_star: w✝ ms✝

right✝¹: Meas.concat F m₁ w✝ = m

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i w✝


Doc.concat d_choiceless_left d_choiceless_right List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F (Doc.concat d_choiceless_left d_choiceless_right) c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

h_d: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝²: MeasRender F d_choiceless_left c i m₁

h_d: a, a ms✝ Meas.concat F m₁ a = m

w✝: Meas

h_star: w✝ ms✝

right✝¹: Meas.concat F m₁ w✝ = m

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i w✝


MeasRender F (Doc.concat d_choiceless_left d_choiceless_right) c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

h_d: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝²: MeasRender F d_choiceless_left c i m₁

h_d: a, a ms✝ Meas.concat F m₁ a = m

w✝: Meas

h_star: w✝ ms✝

right✝¹: Meas.concat F m₁ w✝ = m

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i w✝


h₁
MeasRender F d_choiceless_left c i ?m₁
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝²: MeasRender F d_choiceless_left c i m₁

h_d: a, a ms✝ Meas.concat F m₁ a = m

w✝: Meas

h_star: w✝ ms✝

right✝¹: Meas.concat F m₁ w✝ = m

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i w✝


h₂
MeasRender F d_choiceless_right ?m₁.last i ?m₂
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝²: MeasRender F d_choiceless_left c i m₁

h_d: a, a ms✝ Meas.concat F m₁ a = m

w✝: Meas

h_star: w✝ ms✝

right✝¹: Meas.concat F m₁ w✝ = m

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i w✝


h
m = Meas.concat F ?m₁ ?m₂
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝²: MeasRender F d_choiceless_left c i m₁

h_d: a, a ms✝ Meas.concat F m₁ a = m

w✝: Meas

h_star: w✝ ms✝

right✝¹: Meas.concat F m₁ w✝ = m

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i w✝


m₁
Meas
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝²: MeasRender F d_choiceless_left c i m₁

h_d: a, a ms✝ Meas.concat F m₁ a = m

w✝: Meas

h_star: w✝ ms✝

right✝¹: Meas.concat F m₁ w✝ = m

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i w✝


m₂
Meas
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

h_d: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝²: MeasRender F d_choiceless_left c i m₁

h_d: a, a ms✝ Meas.concat F m₁ a = m

w✝: Meas

h_star: w✝ ms✝

right✝¹: Meas.concat F m₁ w✝ = m

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i w✝


MeasRender F d_choiceless_right m₁.last i ?m₂

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

h_d: m dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝²: MeasRender F d_choiceless_left c i m₁

h_d: a, a ms✝ Meas.concat F m₁ a = m

w✝: Meas

h_star: w✝ ms✝

right✝¹: Meas.concat F m₁ w✝ = m

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i w✝


m = Meas.concat F m₁ w✝
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝²: MeasRender F d_choiceless_left c i m₁

h_d: a, a ms✝ Meas.concat F m₁ a = m

w✝: Meas

h_star: w✝ ms✝

right✝¹: Meas.concat F m₁ w✝ = m

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i w✝


Meas.concat F m₁ w✝ = m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝²: MeasRender F d_choiceless_left c i m₁

h_d: a, a ms✝ Meas.concat F m₁ a = m

w✝: Meas

h_star: w✝ ms✝

right✝¹: Meas.concat F m₁ w✝ = m

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i w✝


Meas.concat F m₁ w✝ = m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty✝: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty✝)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h_non_empty: ms✝ []

h_current: Resolve F d₂ m₁.last i (MeasureSet.set ms✝ h_non_empty)

h✝: dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝) []

h_non_empty_r: merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹) []

h_m: m merge F (dedup F (List.map (fun m' => Meas.concat F m₁ m') ms✝), ms✝¹)

this: d_choiceless, d_choiceless L₁ MeasRender F d_choiceless c i m₁

d_choiceless_left: Doc

left✝¹: d_choiceless_left L₁

right✝²: MeasRender F d_choiceless_left c i m₁

h_d: a, a ms✝ Meas.concat F m₁ a = m

w✝: Meas

h_star: w✝ ms✝

right✝¹: Meas.concat F m₁ w✝ = m

d_choiceless_right: Doc

left✝: d_choiceless_right L₂

right✝: MeasRender F d_choiceless_right m₁.last i w✝


m = Meas.concat F m₁ w✝

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

ms_r: List Meas

h_non_empty_r: ms_r []

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_m: m ms_r

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_ml: MeasureSet.set ms_r h_non_empty_r = MeasureSet.union F (MeasureSet.set ms✝ h✝) (MeasureSet.set ms✝¹ h✝¹)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_non_empty_r: merge F (ms✝, ms✝¹) []

h_m: m merge F (ms✝, ms✝¹)

h_d: m ms✝¹


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_non_empty_r: merge F (ms✝, ms✝¹) []

h_m: m merge F (ms✝, ms✝¹)

h_d: m ms✝¹


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_non_empty_r: merge F (ms✝, ms✝¹) []

h_m: m merge F (ms✝, ms✝¹)

h_d: m ms✝¹


∀ (x : Meas), x m₂ :: tlx orig_ms
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_non_empty_r: merge F (ms✝, ms✝¹) []

h_m: m merge F (ms✝, ms✝¹)

h_d: m ms✝¹


∀ (x : Meas), x m₂ :: tlx orig_ms
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_non_empty_r: merge F (ms✝, ms✝¹) []

h_m: m merge F (ms✝, ms✝¹)

h_d: m ms✝¹


∀ (x : Meas), x m₂ :: tlx orig_ms
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_non_empty_r: merge F (ms✝, ms✝¹) []

h_m: m merge F (ms✝, ms✝¹)

h_d: m ms✝¹

x✝: Meas

a✝: x✝ m₂ :: tl


x✝ orig_ms
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_non_empty_r: merge F (ms✝, ms✝¹) []

h_m: m merge F (ms✝, ms✝¹)

h_d: m ms✝¹


∀ (x : Meas), x m₂ :: tlx orig_ms
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_non_empty_r: merge F (ms✝, ms✝¹) []

h_m: m merge F (ms✝, ms✝¹)

h_d: m ms✝¹

x✝: Meas

a✝: x✝ m₂ :: tl


a
x✝ m₁ :: m₂ :: tl
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_non_empty_r: merge F (ms✝, ms✝¹) []

h_m: m merge F (ms✝, ms✝¹)

h_d: m ms✝¹


∀ (x : Meas), x m₂ :: tlx orig_ms
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_non_empty_r: merge F (ms✝, ms✝¹) []

h_m: m merge F (ms✝, ms✝¹)

h_d: m ms✝¹

x✝: Meas

a✝: x✝ m₂ :: tl


a.a
List.Mem x✝ (m₂ :: tl)
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_non_empty_r: merge F (ms✝, ms✝¹) []

h_m: m merge F (ms✝, ms✝¹)

h_d: m ms✝¹


∀ (x : Meas), x m₂ :: tlx orig_ms

Goals accomplished! 🐙

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝²: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝²)

ms✝: List Meas

h✝¹: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝¹)

h_non_empty_r: merge F (ms✝, ms✝¹) []

h_m: m merge F (ms✝, ms✝¹)

h_d: m ms✝¹

d_choiceless: Doc

h✝: d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

m: Meas

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m₁, m₂: Meas

tl: List Meas

h_transfer: ∀ (x : Meas), x m₁ :: m₂ :: tlx orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F (m₂ :: tl) d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m₁ i (MeasureSet.set ms✝ h✝)

h_non_empty_r: merge F (ms✝, ms✝¹) []

h_m: m merge F (ms✝, ms✝¹)

h_d: m ms✝¹


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m

Goals accomplished! 🐙
end termination_by ResolveConcat_valid => (
d₁: Doc
d₁
.
size: Doc
size
+
d₂: Doc
d₂
.
size: Doc
size
+
1: ?m.145095
1
,
0: ?m.145173
0
,
ms: List Meas
ms
.
length: {α : Type ?u.145183} → List α
length
) Resolve_valid => (
d: Doc
d
.
size: Doc
size
,
1: ?m.144652
1
,
0: ?m.144663
0
) mutual /-- The validity theorem for tainted result (the second part of Theorem 5.8) -/ theorem
Resolve_tainted_valid: ∀ {α : Type} {F : Factory α} {d : Doc} {c i : } {m : Meas} {D : List Doc}, Resolve F d c i (MeasureSet.tainted m)Widen d Dd_choiceless, d_choiceless D MeasRender F d_choiceless c i m
Resolve_tainted_valid
(
h_print: Resolve F d c i (MeasureSet.tainted m)
h_print
:
Resolve: {α : Type} → Factory αDocMeasureSetProp
Resolve
F: ?m.410385
F
d: ?m.410392
d
c: ?m.410398
c
i: ?m.410404
i
(
MeasureSet.tainted: {α : Type} → MeasMeasureSet
MeasureSet.tainted
m: ?m.410413
m
)) (
h_widen: Widen d D
h_widen
:
Widen: DocList DocProp
Widen
d: ?m.410392
d
D: ?m.410424
D
) : ∃
d_choiceless: ?m.410438
d_choiceless
,
d_choiceless: ?m.410438
d_choiceless
D: ?m.410424
D
MeasRender: {α : Type} → Factory αDocMeasProp
MeasRender
F: ?m.410385
F
d_choiceless: ?m.410438
d_choiceless
c: ?m.410398
c
i: ?m.410404
i
m: ?m.410413
m
:=

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_print: Resolve F d c i (MeasureSet.tainted m)

h_widen: Widen d D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_print: Resolve F d c i (MeasureSet.tainted m)

h_widen: Widen d D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

s: String

h_print: Resolve F (Doc.text s) c i (MeasureSet.tainted m)

h_widen: Widen (Doc.text s) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_print: Resolve F d c i (MeasureSet.tainted m)

h_widen: Widen d D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

s: String

h_widen: Widen (Doc.text s) D

h_bad✝: c + String.length s > F.W i > F.W

h✝: MeasRender F (Doc.text s) c i m


text_taint
d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

s: String

h_print: Resolve F (Doc.text s) c i (MeasureSet.tainted m)

h_widen: Widen (Doc.text s) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

s: String

h_widen: Widen (Doc.text s) D

h_bad✝: c + String.length s > F.W i > F.W

h✝: MeasRender F (Doc.text s) c i m


text_taint
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

s: String

h_print: Resolve F (Doc.text s) c i (MeasureSet.tainted m)

h_widen: Widen (Doc.text s) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

s: String

h_widen: Widen (Doc.text s) D

h_bad✝: c + String.length s > F.W i > F.W

h✝: MeasRender F (Doc.text s) c i m


text_taint.left
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

s: String

h_widen: Widen (Doc.text s) D

h_bad✝: c + String.length s > F.W i > F.W

h✝: MeasRender F (Doc.text s) c i m


text_taint.right
MeasRender F (Doc.text s) c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

s: String

h_print: Resolve F (Doc.text s) c i (MeasureSet.tainted m)

h_widen: Widen (Doc.text s) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

s: String

h_widen: Widen (Doc.text s) D

h_bad✝: c + String.length s > F.W i > F.W

h✝: MeasRender F (Doc.text s) c i m


α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

s: String

h_bad✝: c + String.length s > F.W i > F.W

h✝: MeasRender F (Doc.text s) c i m


text
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

s: String

h_widen: Widen (Doc.text s) D

h_bad✝: c + String.length s > F.W i > F.W

h✝: MeasRender F (Doc.text s) c i m



Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

s: String

h_print: Resolve F (Doc.text s) c i (MeasureSet.tainted m)

h_widen: Widen (Doc.text s) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

s: String

h_widen: Widen (Doc.text s) D

h_bad✝: c + String.length s > F.W i > F.W

h✝: MeasRender F (Doc.text s) c i m


MeasRender F (Doc.text s) c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_print: Resolve F d c i (MeasureSet.tainted m)

h_widen: Widen d D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_print: Resolve F Doc.nl c i (MeasureSet.tainted m)

h_widen: Widen Doc.nl D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_print: Resolve F d c i (MeasureSet.tainted m)

h_widen: Widen d D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_widen: Widen Doc.nl D

h_bad✝: c > F.W i > F.W

h✝: MeasRender F Doc.nl c i m


line_taint
d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_print: Resolve F Doc.nl c i (MeasureSet.tainted m)

h_widen: Widen Doc.nl D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_widen: Widen Doc.nl D

h_bad✝: c > F.W i > F.W

h✝: MeasRender F Doc.nl c i m


line_taint
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_print: Resolve F Doc.nl c i (MeasureSet.tainted m)

h_widen: Widen Doc.nl D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_widen: Widen Doc.nl D

h_bad✝: c > F.W i > F.W

h✝: MeasRender F Doc.nl c i m


line_taint.left
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_widen: Widen Doc.nl D

h_bad✝: c > F.W i > F.W

h✝: MeasRender F Doc.nl c i m


line_taint.right
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_print: Resolve F Doc.nl c i (MeasureSet.tainted m)

h_widen: Widen Doc.nl D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_widen: Widen Doc.nl D

h_bad✝: c > F.W i > F.W

h✝: MeasRender F Doc.nl c i m


α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

h_bad✝: c > F.W i > F.W

h✝: MeasRender F Doc.nl c i m


nl
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_widen: Widen Doc.nl D

h_bad✝: c > F.W i > F.W

h✝: MeasRender F Doc.nl c i m



Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_print: Resolve F Doc.nl c i (MeasureSet.tainted m)

h_widen: Widen Doc.nl D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_widen: Widen Doc.nl D

h_bad✝: c > F.W i > F.W

h✝: MeasRender F Doc.nl c i m



Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_print: Resolve F d c i (MeasureSet.tainted m)

h_widen: Widen d D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

n:

d': Doc

h_print: Resolve F (Doc.nest n d') c i (MeasureSet.tainted m)

h_widen: Widen (Doc.nest n d') D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_print: Resolve F d c i (MeasureSet.tainted m)

h_widen: Widen d D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

ml: MeasureSet

h_gen: MeasureSet.tainted m = ml

h_print: Resolve F (Doc.nest n d') c i ml


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

n:

d': Doc

h_print: Resolve F (Doc.nest n d') c i (MeasureSet.tainted m)

h_widen: Widen (Doc.nest n d') D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

ms✝: MeasureSet

h✝: Resolve F d' c (i + n) ms✝

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_nest n) ms✝


nest
d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

n:

d': Doc

h_print: Resolve F (Doc.nest n d') c i (MeasureSet.tainted m)

h_widen: Widen (Doc.nest n d') D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

ms': MeasureSet

h': Resolve F d' c (i + n) ms'

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_nest n) ms'


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

m✝: Meas

h': Resolve F d' c (i + n) (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_nest n) (MeasureSet.tainted m✝)


tainted
d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c (i + n) (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_nest n) (MeasureSet.set ms✝ h✝)


set
d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

ms': MeasureSet

h': Resolve F d' c (i + n) ms'

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_nest n) ms'


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c (i + n) (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_nest n) (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

ms': MeasureSet

h': Resolve F d' c (i + n) ms'

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_nest n) ms'


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

m✝: Meas

h': Resolve F d' c (i + n) (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_nest n) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

m✝: Meas

h': Resolve F d' c (i + n) (MeasureSet.tainted m✝)

h_gen: m = Meas.adjust_nest n m✝


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

m✝: Meas

h': Resolve F d' c (i + n) (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_nest n) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

D: List Doc

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

m✝: Meas

h': Resolve F d' c (i + n) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i (Meas.adjust_nest n m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

m✝: Meas

h': Resolve F d' c (i + n) (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_nest n) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i, n:

d': Doc

m✝: Meas

h': Resolve F d' c (i + n) (MeasureSet.tainted m✝)

L✝: List Doc

h✝: Widen d' L✝


nest
d_choiceless, d_choiceless List.map (fun d => Doc.nest n d) L✝ MeasRender F d_choiceless c i (Meas.adjust_nest n m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

m✝: Meas

h': Resolve F d' c (i + n) (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_nest n) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i, n:

d': Doc

m✝: Meas

h': Resolve F d' c (i + n) (MeasureSet.tainted m✝)

L✝: List Doc

h_widen: Widen d' L✝


nest
d_choiceless, d_choiceless List.map (fun d => Doc.nest n d) L✝ MeasRender F d_choiceless c i (Meas.adjust_nest n m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

m✝: Meas

h': Resolve F d' c (i + n) (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_nest n) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i, n:

d'✝: Doc

m✝: Meas

h': Resolve F d'✝ c (i + n) (MeasureSet.tainted m✝)

L✝: List Doc

h_widen: Widen d'✝ L✝

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c (i + n) m✝


nest
d_choiceless, d_choiceless List.map (fun d => Doc.nest n d) L✝ MeasRender F d_choiceless c i (Meas.adjust_nest n m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

m✝: Meas

h': Resolve F d' c (i + n) (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_nest n) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i, n:

d'✝: Doc

m✝: Meas

h': Resolve F d'✝ c (i + n) (MeasureSet.tainted m✝)

L✝: List Doc

h_widen: Widen d'✝ L✝

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c (i + n) m✝


nest
Doc.nest n d' List.map (fun d => Doc.nest n d) L✝ MeasRender F (Doc.nest n d') c i (Meas.adjust_nest n m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

m✝: Meas

h': Resolve F d' c (i + n) (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_nest n) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i, n:

d'✝: Doc

m✝: Meas

h': Resolve F d'✝ c (i + n) (MeasureSet.tainted m✝)

L✝: List Doc

h_widen: Widen d'✝ L✝

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c (i + n) m✝


nest
MeasRender F (Doc.nest n d') c i (Meas.adjust_nest n m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

m✝: Meas

h': Resolve F d' c (i + n) (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_nest n) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i, n:

d'✝: Doc

m✝: Meas

h': Resolve F d'✝ c (i + n) (MeasureSet.tainted m✝)

L✝: List Doc

h_widen: Widen d'✝ L✝

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c (i + n) m✝

this: m✝.doc = d'


nest
MeasRender F (Doc.nest n d') c i (Meas.adjust_nest n m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

m✝: Meas

h': Resolve F d' c (i + n) (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_nest n) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i, n:

d': Doc

m✝: Meas

h': Resolve F d' c (i + n) (MeasureSet.tainted m✝)

L✝: List Doc

h_widen: Widen d' L✝

h_in: m✝.doc L✝

h_render: MeasRender F m✝.doc c (i + n) m✝


nest
MeasRender F (Doc.nest n m✝.doc) c i (Meas.adjust_nest n m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

m✝: Meas

h': Resolve F d' c (i + n) (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_nest n) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i, n:

d': Doc

m✝: Meas

h': Resolve F d' c (i + n) (MeasureSet.tainted m✝)

L✝: List Doc

h_widen: Widen d' L✝

h_in: m✝.doc L✝

h_render: MeasRender F m✝.doc c (i + n) m✝


nest.h
MeasRender F m✝.doc c (i + n) { last := (Meas.adjust_nest n m✝).last, cost := (Meas.adjust_nest n m✝).cost, doc := m✝.doc, x := (Meas.adjust_nest n m✝).x, y := (Meas.adjust_nest n m✝).y }
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

n:

d': Doc

h_widen: Widen (Doc.nest n d') D

m✝: Meas

h': Resolve F d' c (i + n) (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_nest n) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_print: Resolve F d c i (MeasureSet.tainted m)

h_widen: Widen d D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_print: Resolve F (Doc.align d') c i (MeasureSet.tainted m)

h_widen: Widen (Doc.align d') D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_print: Resolve F d c i (MeasureSet.tainted m)

h_widen: Widen d D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

ml: MeasureSet

h_gen: MeasureSet.tainted m = ml

h_print: Resolve F (Doc.align d') c i ml


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_print: Resolve F (Doc.align d') c i (MeasureSet.tainted m)

h_widen: Widen (Doc.align d') D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

ms✝: MeasureSet

h✝: Resolve F d' c c ms✝

h_bad✝: i > F.W

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint ms✝)


align_taint
d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

ms✝: MeasureSet

h✝: Resolve F d' c c ms✝

h_ok✝: i F.W

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) ms✝


align
d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_print: Resolve F (Doc.align d') c i (MeasureSet.tainted m)

h_widen: Widen (Doc.align d') D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

ms': MeasureSet

h': Resolve F d' c c ms'

h_ok✝: i F.W

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) ms'


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.tainted m✝)


tainted
d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c c (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.set ms✝ h✝)


set
d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

ms': MeasureSet

h': Resolve F d' c c ms'

h_ok✝: i F.W

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) ms'


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

ms✝: List Meas

h✝: ms✝ []

h': Resolve F d' c c (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

ms': MeasureSet

h': Resolve F d' c c ms'

h_ok✝: i F.W

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) ms'


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)

h_gen: m = Meas.adjust_align i m✝


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i (Meas.adjust_align i m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_ok✝: i F.W

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)

L✝: List Doc

h✝: Widen d' L✝


align
d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_ok✝: i F.W

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)

L✝: List Doc

h_widen: Widen d' L✝


align
d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

d'✝: Doc

h_ok✝: i F.W

m✝: Meas

h': Resolve F d'✝ c c (MeasureSet.tainted m✝)

L✝: List Doc

h_widen: Widen d'✝ L✝

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c c m✝


align
d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

d'✝: Doc

h_ok✝: i F.W

m✝: Meas

h': Resolve F d'✝ c c (MeasureSet.tainted m✝)

L✝: List Doc

h_widen: Widen d'✝ L✝

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c c m✝


align
Doc.align d' List.map (fun d => Doc.align d) L✝ MeasRender F (Doc.align d') c i (Meas.adjust_align i m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

d'✝: Doc

h_ok✝: i F.W

m✝: Meas

h': Resolve F d'✝ c c (MeasureSet.tainted m✝)

L✝: List Doc

h_widen: Widen d'✝ L✝

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c c m✝


align
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

d'✝: Doc

h_ok✝: i F.W

m✝: Meas

h': Resolve F d'✝ c c (MeasureSet.tainted m✝)

L✝: List Doc

h_widen: Widen d'✝ L✝

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c c m✝

this: m✝.doc = d'


align
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_ok✝: i F.W

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)

L✝: List Doc

h_widen: Widen d' L✝

h_in: m✝.doc L✝

h_render: MeasRender F m✝.doc c c m✝


align
MeasRender F (Doc.align m✝.doc) c i (Meas.adjust_align i m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_ok✝: i F.W

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)

L✝: List Doc

h_widen: Widen d' L✝

h_in: m✝.doc L✝

h_render: MeasRender F m✝.doc c c m✝


align.h
MeasRender F m✝.doc c c { last := (Meas.adjust_align i m✝).last, cost := (Meas.adjust_align i m✝).cost, doc := m✝.doc, x := (Meas.adjust_align i m✝).x, y := m✝.y }
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

h_ok✝: i F.W

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_print: Resolve F (Doc.align d') c i (MeasureSet.tainted m)

h_widen: Widen (Doc.align d') D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

ms': MeasureSet

h✝: Resolve F d' c c ms'

h_bad✝: i > F.W

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint ms')


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

ms': MeasureSet

h✝¹: Resolve F d' c c ms'

h_bad✝: i > F.W

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint ms')

L✝: List Doc

h✝: Widen d' L✝


align
d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

ms': MeasureSet

h✝: Resolve F d' c c ms'

h_bad✝: i > F.W

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint ms')


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

ms': MeasureSet

h✝: Resolve F d' c c ms'

h_bad✝: i > F.W

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint ms')

L✝: List Doc

h_widen: Widen d' L✝


align
d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

ms': MeasureSet

h✝: Resolve F d' c c ms'

h_bad✝: i > F.W

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint ms')


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

m✝: Meas

h✝: Resolve F d' c c (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint (MeasureSet.tainted m✝))


align.tainted
d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

ms✝: List Meas

h✝¹: ms✝ []

h✝: Resolve F d' c c (MeasureSet.set ms✝ h✝¹)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint (MeasureSet.set ms✝ h✝¹))


align.set
d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

ms': MeasureSet

h✝: Resolve F d' c c ms'

h_bad✝: i > F.W

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint ms')

L✝: List Doc

h_widen: Widen d' L✝


align
d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

m✝: Meas

h✝: Resolve F d' c c (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint (MeasureSet.tainted m✝))


align.tainted
d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

ms✝: List Meas

h✝¹: ms✝ []

h✝: Resolve F d' c c (MeasureSet.set ms✝ h✝¹)

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint (MeasureSet.set ms✝ h✝¹))


align.set
d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

ms': MeasureSet

h✝: Resolve F d' c c ms'

h_bad✝: i > F.W

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint ms')

L✝: List Doc

h_widen: Widen d' L✝


align
d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

m✝: Meas

h✝: Resolve F d' c c (MeasureSet.tainted m✝)

h_gen: m = Meas.adjust_align i m✝


align.tainted
d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

ms': MeasureSet

h✝: Resolve F d' c c ms'

h_bad✝: i > F.W

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint ms')

L✝: List Doc

h_widen: Widen d' L✝


align
d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

m✝: Meas

h✝: Resolve F d' c c (MeasureSet.tainted m✝)

h_gen: m = Meas.adjust_align i m✝


align.tainted
d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

ms✝: List Meas

h✝¹: ms✝ []

h✝: Resolve F d' c c (MeasureSet.set ms✝ h✝¹)

h_gen: m = Meas.adjust_align i (List.head ms✝ h✝¹)


align.set
d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d': Doc

ms': MeasureSet

h✝: Resolve F d' c c ms'

h_bad✝: i > F.W

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint ms')

L✝: List Doc

h_widen: Widen d' L✝


align
d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

m✝: Meas

h✝: Resolve F d' c c (MeasureSet.tainted m✝)


align.tainted
d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

ms': MeasureSet

h✝: Resolve F d' c c ms'

h_bad✝: i > F.W

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint ms')


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d'✝: Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d'✝ L✝

m✝: Meas

h': Resolve F d'✝ c c (MeasureSet.tainted m✝)

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c c m✝


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d'✝: Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d'✝ L✝

m✝: Meas

h': Resolve F d'✝ c c (MeasureSet.tainted m✝)

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c c m✝


Doc.align d' List.map (fun d => Doc.align d) L✝ MeasRender F (Doc.align d') c i (Meas.adjust_align i m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d'✝: Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d'✝ L✝

m✝: Meas

h': Resolve F d'✝ c c (MeasureSet.tainted m✝)

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c c m✝


α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d'✝: Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d'✝ L✝

m✝: Meas

h': Resolve F d'✝ c c (MeasureSet.tainted m✝)

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c c m✝

this: m✝.doc = d'


α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)

h_in: m✝.doc L✝

h_render: MeasRender F m✝.doc c c m✝


MeasRender F (Doc.align m✝.doc) c i (Meas.adjust_align i m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)

h_in: m✝.doc L✝

h_render: MeasRender F m✝.doc c c m✝


h
MeasRender F m✝.doc c c { last := (Meas.adjust_align i m✝).last, cost := (Meas.adjust_align i m✝).cost, doc := m✝.doc, x := (Meas.adjust_align i m✝).x, y := m✝.y }
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

m✝: Meas

h': Resolve F d' c c (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i m✝)

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d': Doc

h_widen: Widen (Doc.align d') D

ms': MeasureSet

h✝: Resolve F d' c c ms'

h_bad✝: i > F.W

h_gen: MeasureSet.tainted m = MeasureSet.lift (Meas.adjust_align i) (MeasureSet.taint ms')


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

ms_res: List Meas

h_non_empty: ms_res []

h': Resolve F d' c c (MeasureSet.set ms_res h_non_empty)


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i (List.head ms_res h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

h_non_empty: [] []

h': Resolve F d' c c (MeasureSet.set [] h_non_empty)


nil
d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i (List.head [] h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

head✝: Meas

tail✝: List Meas

h_non_empty: head✝ :: tail✝ []

h': Resolve F d' c c (MeasureSet.set (head✝ :: tail✝) h_non_empty)


cons
d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i (List.head (head✝ :: tail✝) h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

ms_res: List Meas

h_non_empty: ms_res []

h': Resolve F d' c c (MeasureSet.set ms_res h_non_empty)


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i (List.head ms_res h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

h_non_empty: [] []

h': Resolve F d' c c (MeasureSet.set [] h_non_empty)


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i (List.head [] h_non_empty))

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

ms_res: List Meas

h_non_empty: ms_res []

h': Resolve F d' c c (MeasureSet.set ms_res h_non_empty)


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i (List.head ms_res h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h': Resolve F d' c c (MeasureSet.set (hd :: tl) h_non_empty)


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i (List.head (hd :: tl) h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h': Resolve F d' c c (MeasureSet.set (hd :: tl) h_non_empty)


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i (List.head (hd :: tl) h_non_empty))

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h': Resolve F d' c c (MeasureSet.set (hd :: tl) h_non_empty)


hd hd :: tl

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h': Resolve F d' c c (MeasureSet.set (hd :: tl) h_non_empty)


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i (List.head (hd :: tl) h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d'✝: Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d'✝ L✝

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h': Resolve F d'✝ c c (MeasureSet.set (hd :: tl) h_non_empty)

h_mem: hd hd :: tl

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c c hd


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i (List.head (hd :: tl) h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h': Resolve F d' c c (MeasureSet.set (hd :: tl) h_non_empty)


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i (List.head (hd :: tl) h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d'✝: Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d'✝ L✝

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h': Resolve F d'✝ c c (MeasureSet.set (hd :: tl) h_non_empty)

h_mem: hd hd :: tl

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c c hd


Doc.align d' List.map (fun d => Doc.align d) L✝ MeasRender F (Doc.align d') c i (Meas.adjust_align i (List.head (hd :: tl) h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h': Resolve F d' c c (MeasureSet.set (hd :: tl) h_non_empty)


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i (List.head (hd :: tl) h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d'✝: Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d'✝ L✝

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h': Resolve F d'✝ c c (MeasureSet.set (hd :: tl) h_non_empty)

h_mem: hd hd :: tl

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c c hd


α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h': Resolve F d' c c (MeasureSet.set (hd :: tl) h_non_empty)


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i (List.head (hd :: tl) h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d'✝: Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d'✝ L✝

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h': Resolve F d'✝ c c (MeasureSet.set (hd :: tl) h_non_empty)

h_mem: hd hd :: tl

d': Doc

h_in: d' L✝

h_render: MeasRender F d' c c hd

this: hd.doc = d'


α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h': Resolve F d' c c (MeasureSet.set (hd :: tl) h_non_empty)


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i (List.head (hd :: tl) h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h': Resolve F d' c c (MeasureSet.set (hd :: tl) h_non_empty)

h_mem: hd hd :: tl

h_in: hd.doc L✝

h_render: MeasRender F hd.doc c c hd


MeasRender F (Doc.align hd.doc) c i (Meas.adjust_align i hd)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h': Resolve F d' c c (MeasureSet.set (hd :: tl) h_non_empty)


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i (List.head (hd :: tl) h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h': Resolve F d' c c (MeasureSet.set (hd :: tl) h_non_empty)

h_mem: hd hd :: tl

h_in: hd.doc L✝

h_render: MeasRender F hd.doc c c hd


h
MeasRender F hd.doc c c { last := (Meas.adjust_align i hd).last, cost := (Meas.adjust_align i hd).cost, doc := hd.doc, x := (Meas.adjust_align i hd).x, y := hd.y }
α✝: Type

F: Factory α✝

d: Doc

c, i:

d': Doc

h_bad✝: i > F.W

L✝: List Doc

h_widen: Widen d' L✝

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h': Resolve F d' c c (MeasureSet.set (hd :: tl) h_non_empty)


d_choiceless, d_choiceless List.map (fun d => Doc.align d) L✝ MeasRender F d_choiceless c i (Meas.adjust_align i (List.head (hd :: tl) h_non_empty))

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_print: Resolve F d c i (MeasureSet.tainted m)

h_widen: Widen d D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d₁, d₂: Doc

h_print: Resolve F (Doc.choice d₁ d₂) c i (MeasureSet.tainted m)

h_widen: Widen (Doc.choice d₁ d₂) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_print: Resolve F d c i (MeasureSet.tainted m)

h_widen: Widen d D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d₁, d₂: Doc

h_widen: Widen (Doc.choice d₁ d₂) D

ml: MeasureSet

h_gen: MeasureSet.tainted m = ml

h_print: Resolve F (Doc.choice d₁ d₂) c i ml


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d₁, d₂: Doc

h_print: Resolve F (Doc.choice d₁ d₂) c i (MeasureSet.tainted m)

h_widen: Widen (Doc.choice d₁ d₂) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

ml: MeasureSet

h_gen: MeasureSet.tainted m = ml

h_print: Resolve F (Doc.choice d₁ d₂) c i ml

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝


choice
d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d₁, d₂: Doc

h_print: Resolve F (Doc.choice d₁ d₂) c i (MeasureSet.tainted m)

h_widen: Widen (Doc.choice d₁ d₂) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

ml: MeasureSet

h_gen: MeasureSet.tainted m = ml

h_print: Resolve F (Doc.choice d₁ d₂) c i ml

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms✝, ms'✝: MeasureSet

h_left✝: Resolve F d₁ c i ms✝

h_right✝: Resolve F d₂ c i ms'✝

h_gen: MeasureSet.tainted m = MeasureSet.union F ms✝ ms'✝


choice
d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

ml: MeasureSet

h_gen: MeasureSet.tainted m = ml

h_print: Resolve F (Doc.choice d₁ d₂) c i ml

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms₁, ms₂: MeasureSet

h₁: Resolve F d₁ c i ms₁

h₂: Resolve F d₂ c i ms₂

h_gen: MeasureSet.tainted m = MeasureSet.union F ms₁ ms₂


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms₂: MeasureSet

h₂: Resolve F d₂ c i ms₂

m✝: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.tainted m✝) ms₂


tainted
d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms₂: MeasureSet

h₂: Resolve F d₂ c i ms₂

ms✝: List Meas

h✝: ms✝ []

h₁: Resolve F d₁ c i (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.set ms✝ h✝) ms₂


set
d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms₁, ms₂: MeasureSet

h₁: Resolve F d₁ c i ms₁

h₂: Resolve F d₂ c i ms₂

h_gen: MeasureSet.tainted m = MeasureSet.union F ms₁ ms₂


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms₂: MeasureSet

h₂: Resolve F d₂ c i ms₂

m✝: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.tainted m✝) ms₂


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms₂: MeasureSet

h₂: Resolve F d₂ c i ms₂

m✝: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.tainted m✝) ms₂


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.tainted m✝¹) (MeasureSet.tainted m✝)


tainted
d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝)

ms✝: List Meas

h✝: ms✝ []

h₂: Resolve F d₂ c i (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.tainted m✝) (MeasureSet.set ms✝ h✝)


set
d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.tainted m✝¹) (MeasureSet.tainted m✝)


tainted
d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms₂: MeasureSet

h₂: Resolve F d₂ c i ms₂

m✝: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.tainted m✝) ms₂


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.tainted m✝¹) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h_gen: m = m✝¹


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.tainted m✝¹) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h₁: Resolve F d₁ c i (MeasureSet.tainted m)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.tainted m✝¹) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h₁: Resolve F d₁ c i (MeasureSet.tainted m)

d': Doc

h_in: d' L₁✝

h_render: MeasRender F d' c i m


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.tainted m✝¹) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h₁: Resolve F d₁ c i (MeasureSet.tainted m)

d': Doc

h_in: d' L₁✝

h_render: MeasRender F d' c i m


d' L₁✝ ++ L₂✝ MeasRender F d' c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹: Meas

h₁: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.tainted m✝¹) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms₁, ms₂: MeasureSet

h₁: Resolve F d₁ c i ms₁

h₂: Resolve F d₂ c i ms₂

h_gen: MeasureSet.tainted m = MeasureSet.union F ms₁ ms₂


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms₂: MeasureSet

h₂: Resolve F d₂ c i ms₂

ms': List Meas

h✝: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝)

h_gen: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.set ms' h✝) ms₂


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝)

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.set ms' h✝) (MeasureSet.tainted m✝)


tainted
d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝¹: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝¹)

ms✝: List Meas

h✝: ms✝ []

h₂: Resolve F d₂ c i (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.set ms' h✝¹) (MeasureSet.set ms✝ h✝)


set
d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms₂: MeasureSet

h₂: Resolve F d₂ c i ms₂

ms': List Meas

h✝: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝)

h_gen: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.set ms' h✝) ms₂


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝)

m✝: Meas

h₂: Resolve F d₂ c i (MeasureSet.tainted m✝)

h_gen: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.set ms' h✝) (MeasureSet.tainted m✝)


tainted
d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms': List Meas

h✝¹: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝¹)

ms✝: List Meas

h✝: ms✝ []

h₂: Resolve F d₂ c i (MeasureSet.set ms✝ h✝)

h_gen: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.set ms' h✝¹) (MeasureSet.set ms✝ h✝)


set
d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms₂: MeasureSet

h₂: Resolve F d₂ c i ms₂

ms': List Meas

h✝: ms' []

h₁: Resolve F d₁ c i (MeasureSet.set ms' h✝)

h_gen: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.set ms' h✝) ms₂


d_choiceless, d_choiceless L₁✝ ++ L₂✝ MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_print: Resolve F d c i (MeasureSet.tainted m)

h_widen: Widen d D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d₁, d₂: Doc

h_print: Resolve F (Doc.concat d₁ d₂) c i (MeasureSet.tainted m)

h_widen: Widen (Doc.concat d₁ d₂) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

h_print: Resolve F d c i (MeasureSet.tainted m)

h_widen: Widen d D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

h_print: Resolve F (Doc.concat d₁ d₂) c i (MeasureSet.tainted m)

L₁✝, L₂✝: List Doc

h₁✝: Widen d₁ L₁✝

h₂✝: Widen d₂ L₂✝


concat
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d₁, d₂: Doc

h_print: Resolve F (Doc.concat d₁ d₂) c i (MeasureSet.tainted m)

h_widen: Widen (Doc.concat d₁ d₂) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

h_print: Resolve F (Doc.concat d₁ d₂) c i (MeasureSet.tainted m)

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝


concat
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d₁, d₂: Doc

h_print: Resolve F (Doc.concat d₁ d₂) c i (MeasureSet.tainted m)

h_widen: Widen (Doc.concat d₁ d₂) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

ms'✝: MeasureSet

m'✝: Meas

h_taint✝: MeasureSet.taint ms'✝ = MeasureSet.tainted m'✝

h_right✝: Resolve F d₂ m✝.last i ms'✝

h_left✝: Resolve F d₁ c i (MeasureSet.tainted m✝)


concat.concat_taint
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ m'✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left✝: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h✝: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m)


concat.concat_set
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d₁, d₂: Doc

h_print: Resolve F (Doc.concat d₁ d₂) c i (MeasureSet.tainted m)

h_widen: Widen (Doc.concat d₁ d₂) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

ms: MeasureSet

m'✝: Meas

h_taint: MeasureSet.taint ms = MeasureSet.tainted m'✝

h_right: Resolve F d₂ m✝.last i ms

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ m'✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹, m'✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h_taint: MeasureSet.taint (MeasureSet.tainted m✝) = MeasureSet.tainted m'✝

h_right: Resolve F d₂ m✝¹.last i (MeasureSet.tainted m✝)


tainted
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝¹ m'✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝, m'✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

ms✝: List Meas

h✝: ms✝ []

h_taint: MeasureSet.taint (MeasureSet.set ms✝ h✝) = MeasureSet.tainted m'✝

h_right: Resolve F d₂ m✝.last i (MeasureSet.set ms✝ h✝)


set
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ m'✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

ms: MeasureSet

m'✝: Meas

h_taint: MeasureSet.taint ms = MeasureSet.tainted m'✝

h_right: Resolve F d₂ m✝.last i ms

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ m'✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹, m'✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h_taint: MeasureSet.taint (MeasureSet.tainted m✝) = MeasureSet.tainted m'✝

h_right: Resolve F d₂ m✝¹.last i (MeasureSet.tainted m✝)


tainted
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝¹ m'✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝, m'✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

ms✝: List Meas

h✝: ms✝ []

h_taint: MeasureSet.taint (MeasureSet.set ms✝ h✝) = MeasureSet.tainted m'✝

h_right: Resolve F d₂ m✝.last i (MeasureSet.set ms✝ h✝)


set
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ m'✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

ms: MeasureSet

m'✝: Meas

h_taint: MeasureSet.taint ms = MeasureSet.tainted m'✝

h_right: Resolve F d₂ m✝.last i ms

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ m'✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹, m'✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h_right: Resolve F d₂ m✝¹.last i (MeasureSet.tainted m✝)

h_taint: m✝ = m'✝


tainted
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝¹ m'✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

ms: MeasureSet

m'✝: Meas

h_taint: MeasureSet.taint ms = MeasureSet.tainted m'✝

h_right: Resolve F d₂ m✝.last i ms

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ m'✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹, m'✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h_right: Resolve F d₂ m✝¹.last i (MeasureSet.tainted m✝)

h_taint: m✝ = m'✝


tainted
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝¹ m'✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝, m'✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

ms✝: List Meas

h✝: ms✝ []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set ms✝ h✝)

h_taint: List.head ms✝ h✝ = m'✝


set
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ m'✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

ms: MeasureSet

m'✝: Meas

h_taint: MeasureSet.taint ms = MeasureSet.tainted m'✝

h_right: Resolve F d₂ m✝.last i ms

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ m'✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

ms✝: List Meas

h✝: ms✝ []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set ms✝ h✝)


set
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ (List.head ms✝ h✝))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

ms: MeasureSet

m'✝: Meas

h_taint: MeasureSet.taint ms = MeasureSet.tainted m'✝

h_right: Resolve F d₂ m✝.last i ms

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ m'✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h_right: Resolve F d₂ m✝¹.last i (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝¹ m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹: Meas

h_left✝: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h_right: Resolve F d₂ m✝¹.last i (MeasureSet.tainted m✝)

d_left: Doc

left✝: d_left L₁✝

h_left: MeasRender F d_left c i m✝¹


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝¹ m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h_right: Resolve F d₂ m✝¹.last i (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝¹ m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹: Meas

h_left✝: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h_right✝: Resolve F d₂ m✝¹.last i (MeasureSet.tainted m✝)

d_left: Doc

left✝¹: d_left L₁✝

h_left: MeasRender F d_left c i m✝¹

d_right: Doc

left✝: d_right L₂✝

h_right: MeasRender F d_right m✝¹.last i m✝


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝¹ m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h_right: Resolve F d₂ m✝¹.last i (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝¹ m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹: Meas

h_left✝: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h_right✝: Resolve F d₂ m✝¹.last i (MeasureSet.tainted m✝)

d_left: Doc

left✝¹: d_left L₁✝

h_left: MeasRender F d_left c i m✝¹

d_right: Doc

left✝: d_right L₂✝

h_right: MeasRender F d_right m✝¹.last i m✝


Doc.concat d_left d_right List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F (Doc.concat d_left d_right) c i (Meas.concat F m✝¹ m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h_right: Resolve F d₂ m✝¹.last i (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝¹ m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹: Meas

h_left✝: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h_right✝: Resolve F d₂ m✝¹.last i (MeasureSet.tainted m✝)

d_left: Doc

left✝¹: d_left L₁✝

h_left: MeasRender F d_left c i m✝¹

d_right: Doc

left✝: d_right L₂✝

h_right: MeasRender F d_right m✝¹.last i m✝


MeasRender F (Doc.concat d_left d_right) c i (Meas.concat F m✝¹ m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h_right: Resolve F d₂ m✝¹.last i (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝¹ m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹: Meas

h_left✝: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h_right✝: Resolve F d₂ m✝¹.last i (MeasureSet.tainted m✝)

d_left: Doc

left✝¹: d_left L₁✝

h_left: MeasRender F d_left c i m✝¹

d_right: Doc

left✝: d_right L₂✝

h_right: MeasRender F d_right m✝¹.last i m✝


MeasRender F (Doc.concat d_left d_right) c i (Meas.concat F m✝¹ m✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹: Meas

h_left✝: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h_right✝: Resolve F d₂ m✝¹.last i (MeasureSet.tainted m✝)

d_left: Doc

left✝¹: d_left L₁✝

h_left: MeasRender F d_left c i m✝¹

d_right: Doc

left✝: d_right L₂✝

h_right: MeasRender F d_right m✝¹.last i m✝


h₁
MeasRender F d_left c i ?m₁
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹: Meas

h_left✝: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h_right✝: Resolve F d₂ m✝¹.last i (MeasureSet.tainted m✝)

d_left: Doc

left✝¹: d_left L₁✝

h_left: MeasRender F d_left c i m✝¹

d_right: Doc

left✝: d_right L₂✝

h_right: MeasRender F d_right m✝¹.last i m✝


h₂
MeasRender F d_right ?m₁.last i ?m₂
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹: Meas

h_left✝: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h_right✝: Resolve F d₂ m✝¹.last i (MeasureSet.tainted m✝)

d_left: Doc

left✝¹: d_left L₁✝

h_left: MeasRender F d_left c i m✝¹

d_right: Doc

left✝: d_right L₂✝

h_right: MeasRender F d_right m✝¹.last i m✝


h
Meas.concat F m✝¹ m✝ = Meas.concat F ?m₁ ?m₂
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹: Meas

h_left✝: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h_right✝: Resolve F d₂ m✝¹.last i (MeasureSet.tainted m✝)

d_left: Doc

left✝¹: d_left L₁✝

h_left: MeasRender F d_left c i m✝¹

d_right: Doc

left✝: d_right L₂✝

h_right: MeasRender F d_right m✝¹.last i m✝


m₁
Meas
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝¹: Meas

h_left✝: Resolve F d₁ c i (MeasureSet.tainted m✝¹)

m✝: Meas

h_right✝: Resolve F d₂ m✝¹.last i (MeasureSet.tainted m✝)

d_left: Doc

left✝¹: d_left L₁✝

h_left: MeasRender F d_left c i m✝¹

d_right: Doc

left✝: d_right L₂✝

h_right: MeasRender F d_right m✝¹.last i m✝


m₂
Meas

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

ms: MeasureSet

m'✝: Meas

h_taint: MeasureSet.taint ms = MeasureSet.tainted m'✝

h_right: Resolve F d₂ m✝.last i ms

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ m'✝)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

ms_res: List Meas

h_non_empty: ms_res []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set ms_res h_non_empty)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ (List.head ms_res h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

h_non_empty: [] []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set [] h_non_empty)


nil
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ (List.head [] h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

head✝: Meas

tail✝: List Meas

h_non_empty: head✝ :: tail✝ []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set (head✝ :: tail✝) h_non_empty)


cons
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ (List.head (head✝ :: tail✝) h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

ms_res: List Meas

h_non_empty: ms_res []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set ms_res h_non_empty)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ (List.head ms_res h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

h_non_empty: [] []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set [] h_non_empty)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ (List.head [] h_non_empty))

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

ms_res: List Meas

h_non_empty: ms_res []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set ms_res h_non_empty)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ (List.head ms_res h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set (hd :: tl) h_non_empty)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ (List.head (hd :: tl) h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set (hd :: tl) h_non_empty)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ (List.head (hd :: tl) h_non_empty))

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set (hd :: tl) h_non_empty)


hd hd :: tl

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set (hd :: tl) h_non_empty)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ (List.head (hd :: tl) h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set (hd :: tl) h_non_empty)

h_mem: hd hd :: tl

d_left: Doc

left✝: d_left L₁✝

right✝: MeasRender F d_left c i m✝


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ (List.head (hd :: tl) h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set (hd :: tl) h_non_empty)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ (List.head (hd :: tl) h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set (hd :: tl) h_non_empty)

h_mem: hd hd :: tl

d_left: Doc

left✝¹: d_left L₁✝

right✝¹: MeasRender F d_left c i m✝

d_right: Doc

left✝: d_right L₂✝

right✝: MeasRender F d_right m✝.last i hd


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ (List.head (hd :: tl) h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set (hd :: tl) h_non_empty)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ (List.head (hd :: tl) h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set (hd :: tl) h_non_empty)

h_mem: hd hd :: tl

d_left: Doc

left✝¹: d_left L₁✝

right✝¹: MeasRender F d_left c i m✝

d_right: Doc

left✝: d_right L₂✝

right✝: MeasRender F d_right m✝.last i hd


Doc.concat d_left d_right List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F (Doc.concat d_left d_right) c i (Meas.concat F m✝ (List.head (hd :: tl) h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set (hd :: tl) h_non_empty)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ (List.head (hd :: tl) h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set (hd :: tl) h_non_empty)

h_mem: hd hd :: tl

d_left: Doc

left✝¹: d_left L₁✝

right✝¹: MeasRender F d_left c i m✝

d_right: Doc

left✝: d_right L₂✝

right✝: MeasRender F d_right m✝.last i hd


MeasRender F (Doc.concat d_left d_right) c i (Meas.concat F m✝ hd)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set (hd :: tl) h_non_empty)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i (Meas.concat F m✝ (List.head (hd :: tl) h_non_empty))
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set (hd :: tl) h_non_empty)

h_mem: hd hd :: tl

d_left: Doc

left✝¹: d_left L₁✝

right✝¹: MeasRender F d_left c i m✝

d_right: Doc

left✝: d_right L₂✝

right✝: MeasRender F d_right m✝.last i hd


MeasRender F (Doc.concat d_left d_right) c i (Meas.concat F m✝ hd)
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set (hd :: tl) h_non_empty)

h_mem: hd hd :: tl

d_left: Doc

left✝¹: d_left L₁✝

right✝¹: MeasRender F d_left c i m✝

d_right: Doc

left✝: d_right L₂✝

right✝: MeasRender F d_right m✝.last i hd


h₁
MeasRender F d_left c i ?m₁
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set (hd :: tl) h_non_empty)

h_mem: hd hd :: tl

d_left: Doc

left✝¹: d_left L₁✝

right✝¹: MeasRender F d_left c i m✝

d_right: Doc

left✝: d_right L₂✝

right✝: MeasRender F d_right m✝.last i hd


h₂
MeasRender F d_right ?m₁.last i ?m₂
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set (hd :: tl) h_non_empty)

h_mem: hd hd :: tl

d_left: Doc

left✝¹: d_left L₁✝

right✝¹: MeasRender F d_left c i m✝

d_right: Doc

left✝: d_right L₂✝

right✝: MeasRender F d_right m✝.last i hd


h
Meas.concat F m✝ hd = Meas.concat F ?m₁ ?m₂
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set (hd :: tl) h_non_empty)

h_mem: hd hd :: tl

d_left: Doc

left✝¹: d_left L₁✝

right✝¹: MeasRender F d_left c i m✝

d_right: Doc

left✝: d_right L₂✝

right✝: MeasRender F d_right m✝.last i hd


m₁
Meas
α✝: Type

F: Factory α✝

d: Doc

c, i:

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

m✝: Meas

h_left: Resolve F d₁ c i (MeasureSet.tainted m✝)

hd: Meas

tl: List Meas

h_non_empty: hd :: tl []

h_right: Resolve F d₂ m✝.last i (MeasureSet.set (hd :: tl) h_non_empty)

h_mem: hd hd :: tl

d_left: Doc

left✝¹: d_left L₁✝

right✝¹: MeasRender F d_left c i m✝

d_right: Doc

left✝: d_right L₂✝

right✝: MeasRender F d_right m✝.last i hd


m₂
Meas

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

D: List Doc

d₁, d₂: Doc

h_print: Resolve F (Doc.concat d₁ d₂) c i (MeasureSet.tainted m)

h_widen: Widen (Doc.concat d₁ d₂) D


d_choiceless, d_choiceless D MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h_print: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h_print: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂✝) L₁✝) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h_print: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m)


h_right
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h_print: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m)


h_widen₁
Widen ?d₁ L₁✝
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h_print: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m)


h_widen₂
Widen ?d₂ L₂✝
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h_print: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m)


h_left
Resolve F ?d₁ c i (MeasureSet.set ?orig_ms ?h_non_empty)
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h_print: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m)


h_transfer
∀ (x : Meas), x ?msx ?orig_ms
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h_print: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m)


ms
List Meas
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h_print: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m)


d₂
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h_print: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m)


d₁
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h_print: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m)


orig_ms
List Meas
α✝: Type

F: Factory α✝

d: Doc

c, i:

m: Meas

d₁, d₂: Doc

L₁✝, L₂✝: List Doc

h_widen₁: Widen d₁ L₁✝

h_widen₂: Widen d₂ L₂✝

ms✝: List Meas

h_non_empty✝: ms✝ []

h_left: Resolve F d₁ c i (MeasureSet.set ms✝ h_non_empty✝)

h_print: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m)


h_non_empty
?orig_ms []

Goals accomplished! 🐙
theorem
ResolveConcat_tainted_valid: ∀ {α : Type} {F : Factory α} {ms : List Meas} {d₂ : Doc} {i : } {m : Meas} {d₁ : Doc} {L₁ L₂ : List Doc} {c : } {orig_ms : List Meas} {h_non_empty : orig_ms []}, ResolveConcat F ms d₂ i (MeasureSet.tainted m)Widen d₁ L₁Widen d₂ L₂Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)(∀ (x : Meas), x msx orig_ms) → d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
ResolveConcat_tainted_valid
(
h_right: ResolveConcat F ms d₂ i (MeasureSet.tainted m)
h_right
:
ResolveConcat: {α : Type} → Factory αList MeasDocMeasureSetProp
ResolveConcat
F: ?m.410464
F
ms: ?m.410471
ms
d₂: ?m.410478
d₂
i: ?m.410484
i
(
MeasureSet.tainted: {α : Type} → MeasMeasureSet
MeasureSet.tainted
m: ?m.410493
m
)) (
h_widen₁: Widen d₁ L₁
h_widen₁
:
Widen: DocList DocProp
Widen
d₁: ?m.410504
d₁
L₁: ?m.410514
L₁
) (
h_widen₂: Widen d₂ L₂
h_widen₂
:
Widen: DocList DocProp
Widen
d₂: ?m.410478
d₂
L₂: ?m.410526
L₂
) (
h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)
h_left
:
Resolve: {α : Type} → Factory αDocMeasureSetProp
Resolve
F: ?m.410464
F
d₁: ?m.410504
d₁
c: ?m.410541
c
i: ?m.410484
i
(
MeasureSet.set: {α : Type} → (ms : List Meas) → ms []MeasureSet
MeasureSet.set
orig_ms: ?m.410558
orig_ms
h_non_empty: ?m.410575
h_non_empty
)) (
h_transfer: ∀ (x : Meas), x msx orig_ms
h_transfer
: ∀
x: ?m.410597
x
,
x: ?m.410597
x
ms: ?m.410471
ms
x: ?m.410597
x
orig_ms: ?m.410558
orig_ms
) : ∃
d_choiceless: ?m.410656
d_choiceless
,
d_choiceless: ?m.410656
d_choiceless
List.join: {α : Type ?u.410663} → List (List α)List α
List.join
(
List.map: {α : Type ?u.410666} → {β : Type ?u.410665} → (αβ) → List αList β
List.map
(fun
d₁: ?m.410671
d₁
=>
List.map: {α : Type ?u.410674} → {β : Type ?u.410673} → (αβ) → List αList β
List.map
(fun
d₂: ?m.410679
d₂
=>
Doc.concat: DocDocDoc
Doc.concat
d₁: ?m.410671
d₁
d₂: ?m.410679
d₂
)
L₂: ?m.410526
L₂
)
L₁: ?m.410514
L₁
) ∧
MeasRender: {α : Type} → Factory αDocMeasProp
MeasRender
F: ?m.410464
F
d_choiceless: ?m.410656
d_choiceless
c: ?m.410541
c
i: ?m.410484
i
m: ?m.410493
m
:=

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_right: ResolveConcat F ms d₂ i (MeasureSet.tainted m)

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_transfer: ∀ (x : Meas), x msx orig_ms


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_transfer: ∀ (x : Meas), x msx orig_ms

ml: MeasureSet

h_ml: MeasureSet.tainted m = ml

h_right: ResolveConcat F ms d₂ i ml


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_right: ResolveConcat F ms d₂ i (MeasureSet.tainted m)

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_transfer: ∀ (x : Meas), x msx orig_ms


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ml: MeasureSet

h_ml: MeasureSet.tainted m = ml

m✝: Meas

h_transfer: ∀ (x : Meas), x [m✝]x orig_ms

h_current✝: ResolveConcatOne F d₂ m✝ i ml


one
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

msr✝: MeasureSet

m✝: Meas

msr'✝: MeasureSet

h_transfer: ∀ (x : Meas), x m✝ :: ms✝x orig_ms

h_rest✝: ResolveConcat F ms✝ d₂ i msr✝

h_current✝: ResolveConcatOne F d₂ m✝ i msr'✝

h_ml: MeasureSet.tainted m = MeasureSet.union F msr'✝ msr✝


cons
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_right: ResolveConcat F ms d₂ i (MeasureSet.tainted m)

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_transfer: ∀ (x : Meas), x msx orig_ms


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ml: MeasureSet

h_ml: MeasureSet.tainted m = ml

m✝: Meas

h_transfer: ∀ (x : Meas), x [m✝]x orig_ms

h_current: ResolveConcatOne F d₂ m✝ i ml


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m✝: Meas

h_transfer: ∀ (x : Meas), x [m✝]x orig_ms

m'✝: Meas

h✝: Resolve F d₂ m✝.last i (MeasureSet.tainted m'✝)

h_ml: MeasureSet.tainted m = MeasureSet.tainted (Meas.concat F m✝ m'✝)


tainted
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m✝: Meas

h_transfer: ∀ (x : Meas), x [m✝]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h✝: Resolve F d₂ m✝.last i (MeasureSet.set ms✝ h_non_empty✝)

h_ml: MeasureSet.tainted m = MeasureSet.set (dedup F (List.map (fun m' => Meas.concat F m✝ m') ms✝)) (_ : dedup F (List.map (fun m' => Meas.concat F m✝ m') ms✝) [])


set
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ml: MeasureSet

h_ml: MeasureSet.tainted m = ml

m✝: Meas

h_transfer: ∀ (x : Meas), x [m✝]x orig_ms

h_current: ResolveConcatOne F d₂ m✝ i ml


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m✝: Meas

h_transfer: ∀ (x : Meas), x [m✝]x orig_ms

ms✝: List Meas

h_non_empty✝: ms✝ []

h✝: Resolve F d₂ m✝.last i (MeasureSet.set ms✝ h_non_empty✝)

h_ml: MeasureSet.tainted m = MeasureSet.set (dedup F (List.map (fun m' => Meas.concat F m✝ m') ms✝)) (_ : dedup F (List.map (fun m' => Meas.concat F m✝ m') ms✝) [])


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ml: MeasureSet

h_ml: MeasureSet.tainted m = ml

m✝: Meas

h_transfer: ∀ (x : Meas), x [m✝]x orig_ms

h_current: ResolveConcatOne F d₂ m✝ i ml


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m✝: Meas

h_transfer: ∀ (x : Meas), x [m✝]x orig_ms

m'✝: Meas

h_current: Resolve F d₂ m✝.last i (MeasureSet.tainted m'✝)

h_ml: MeasureSet.tainted m = MeasureSet.tainted (Meas.concat F m✝ m'✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m✝, m'✝: Meas

h_current: Resolve F d₂ m✝.last i (MeasureSet.tainted m'✝)

h_ml: m = Meas.concat F m✝ m'✝

h_transfer: m✝ orig_ms


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m✝: Meas

h_transfer: ∀ (x : Meas), x [m✝]x orig_ms

m'✝: Meas

h_current: Resolve F d₂ m✝.last i (MeasureSet.tainted m'✝)

h_ml: MeasureSet.tainted m = MeasureSet.tainted (Meas.concat F m✝ m'✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m✝, m'✝: Meas

h_current: Resolve F d₂ m✝.last i (MeasureSet.tainted m'✝)

h_transfer: m✝ orig_ms


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i (Meas.concat F m✝ m'✝)
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m✝: Meas

h_transfer: ∀ (x : Meas), x [m✝]x orig_ms

m'✝: Meas

h_current: Resolve F d₂ m✝.last i (MeasureSet.tainted m'✝)

h_ml: MeasureSet.tainted m = MeasureSet.tainted (Meas.concat F m✝ m'✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m✝, m'✝: Meas

h_current: Resolve F d₂ m✝.last i (MeasureSet.tainted m'✝)

h_transfer: m✝ orig_ms

d_left: Doc

left✝: d_left L₁

h₁: MeasRender F d_left c i m✝


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i (Meas.concat F m✝ m'✝)
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m✝: Meas

h_transfer: ∀ (x : Meas), x [m✝]x orig_ms

m'✝: Meas

h_current: Resolve F d₂ m✝.last i (MeasureSet.tainted m'✝)

h_ml: MeasureSet.tainted m = MeasureSet.tainted (Meas.concat F m✝ m'✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m✝, m'✝: Meas

h_current: Resolve F d₂ m✝.last i (MeasureSet.tainted m'✝)

h_transfer: m✝ orig_ms

d_left: Doc

left✝¹: d_left L₁

h₁: MeasRender F d_left c i m✝

d_right: Doc

left✝: d_right L₂

h₂: MeasRender F d_right m✝.last i m'✝


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i (Meas.concat F m✝ m'✝)
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m✝: Meas

h_transfer: ∀ (x : Meas), x [m✝]x orig_ms

m'✝: Meas

h_current: Resolve F d₂ m✝.last i (MeasureSet.tainted m'✝)

h_ml: MeasureSet.tainted m = MeasureSet.tainted (Meas.concat F m✝ m'✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m✝, m'✝: Meas

h_current: Resolve F d₂ m✝.last i (MeasureSet.tainted m'✝)

h_transfer: m✝ orig_ms

d_left: Doc

left✝¹: d_left L₁

h₁: MeasRender F d_left c i m✝

d_right: Doc

left✝: d_right L₂

h₂: MeasRender F d_right m✝.last i m'✝


Doc.concat d_left d_right List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F (Doc.concat d_left d_right) c i (Meas.concat F m✝ m'✝)
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m✝: Meas

h_transfer: ∀ (x : Meas), x [m✝]x orig_ms

m'✝: Meas

h_current: Resolve F d₂ m✝.last i (MeasureSet.tainted m'✝)

h_ml: MeasureSet.tainted m = MeasureSet.tainted (Meas.concat F m✝ m'✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m✝, m'✝: Meas

h_current: Resolve F d₂ m✝.last i (MeasureSet.tainted m'✝)

h_transfer: m✝ orig_ms

d_left: Doc

left✝¹: d_left L₁

h₁: MeasRender F d_left c i m✝

d_right: Doc

left✝: d_right L₂

h₂: MeasRender F d_right m✝.last i m'✝


MeasRender F (Doc.concat d_left d_right) c i (Meas.concat F m✝ m'✝)
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m✝: Meas

h_transfer: ∀ (x : Meas), x [m✝]x orig_ms

m'✝: Meas

h_current: Resolve F d₂ m✝.last i (MeasureSet.tainted m'✝)

h_ml: MeasureSet.tainted m = MeasureSet.tainted (Meas.concat F m✝ m'✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m✝, m'✝: Meas

h_current: Resolve F d₂ m✝.last i (MeasureSet.tainted m'✝)

h_transfer: m✝ orig_ms

d_left: Doc

left✝¹: d_left L₁

h₁: MeasRender F d_left c i m✝

d_right: Doc

left✝: d_right L₂

h₂: MeasRender F d_right m✝.last i m'✝


MeasRender F (Doc.concat d_left d_right) c i (Meas.concat F m✝ m'✝)
α✝: Type

F: Factory α✝

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m✝, m'✝: Meas

h_current: Resolve F d₂ m✝.last i (MeasureSet.tainted m'✝)

h_transfer: m✝ orig_ms

d_left: Doc

left✝¹: d_left L₁

h₁: MeasRender F d_left c i m✝

d_right: Doc

left✝: d_right L₂

h₂: MeasRender F d_right m✝.last i m'✝


h₁
MeasRender F d_left c i ?m₁
α✝: Type

F: Factory α✝

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m✝, m'✝: Meas

h_current: Resolve F d₂ m✝.last i (MeasureSet.tainted m'✝)

h_transfer: m✝ orig_ms

d_left: Doc

left✝¹: d_left L₁

h₁: MeasRender F d_left c i m✝

d_right: Doc

left✝: d_right L₂

h₂: MeasRender F d_right m✝.last i m'✝


h₂
MeasRender F d_right ?m₁.last i ?m₂
α✝: Type

F: Factory α✝

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m✝, m'✝: Meas

h_current: Resolve F d₂ m✝.last i (MeasureSet.tainted m'✝)

h_transfer: m✝ orig_ms

d_left: Doc

left✝¹: d_left L₁

h₁: MeasRender F d_left c i m✝

d_right: Doc

left✝: d_right L₂

h₂: MeasRender F d_right m✝.last i m'✝


h
Meas.concat F m✝ m'✝ = Meas.concat F ?m₁ ?m₂
α✝: Type

F: Factory α✝

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m✝, m'✝: Meas

h_current: Resolve F d₂ m✝.last i (MeasureSet.tainted m'✝)

h_transfer: m✝ orig_ms

d_left: Doc

left✝¹: d_left L₁

h₁: MeasRender F d_left c i m✝

d_right: Doc

left✝: d_right L₂

h₂: MeasRender F d_right m✝.last i m'✝


m₁
Meas
α✝: Type

F: Factory α✝

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

m✝, m'✝: Meas

h_current: Resolve F d₂ m✝.last i (MeasureSet.tainted m'✝)

h_transfer: m✝ orig_ms

d_left: Doc

left✝¹: d_left L₁

h₁: MeasRender F d_left c i m✝

d_right: Doc

left✝: d_right L₂

h₂: MeasRender F d_right m✝.last i m'✝


m₂
Meas

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

ms: List Meas

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_right: ResolveConcat F ms d₂ i (MeasureSet.tainted m)

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

h_transfer: ∀ (x : Meas), x msx orig_ms


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

msr: MeasureSet

m✝: Meas

msr': MeasureSet

h_transfer: ∀ (x : Meas), x m✝ :: ms✝x orig_ms

h_rest: ResolveConcat F ms✝ d₂ i msr

h_current: ResolveConcatOne F d₂ m✝ i msr'

h_ml: MeasureSet.tainted m = MeasureSet.union F msr' msr


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m✝¹: Meas

msr': MeasureSet

h_transfer: ∀ (x : Meas), x m✝¹ :: ms✝x orig_ms

h_current: ResolveConcatOne F d₂ m✝¹ i msr'

m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

h_ml: MeasureSet.tainted m = MeasureSet.union F msr' (MeasureSet.tainted m✝)


tainted
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝¹: List Meas

m✝: Meas

msr': MeasureSet

h_transfer: ∀ (x : Meas), x m✝ :: ms✝¹x orig_ms

h_current: ResolveConcatOne F d₂ m✝ i msr'

ms✝: List Meas

h✝: ms✝ []

h_rest: ResolveConcat F ms✝¹ d₂ i (MeasureSet.set ms✝ h✝)

h_ml: MeasureSet.tainted m = MeasureSet.union F msr' (MeasureSet.set ms✝ h✝)


set
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

msr: MeasureSet

m✝: Meas

msr': MeasureSet

h_transfer: ∀ (x : Meas), x m✝ :: ms✝x orig_ms

h_rest: ResolveConcat F ms✝ d₂ i msr

h_current: ResolveConcatOne F d₂ m✝ i msr'

h_ml: MeasureSet.tainted m = MeasureSet.union F msr' msr


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m✝¹: Meas

msr': MeasureSet

h_transfer: ∀ (x : Meas), x m✝¹ :: ms✝x orig_ms

h_current: ResolveConcatOne F d₂ m✝¹ i msr'

m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

h_ml: MeasureSet.tainted m = MeasureSet.union F msr' (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m✝¹: Meas

h_transfer: ∀ (x : Meas), x m✝¹ :: ms✝x orig_ms

m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

m'✝: Meas

h✝: Resolve F d₂ m✝¹.last i (MeasureSet.tainted m'✝)

h_ml: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.tainted (Meas.concat F m✝¹ m'✝)) (MeasureSet.tainted m✝)


tainted
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝¹: List Meas

m✝¹: Meas

h_transfer: ∀ (x : Meas), x m✝¹ :: ms✝¹x orig_ms

m✝: Meas

h_rest: ResolveConcat F ms✝¹ d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty✝: ms✝ []

h✝: Resolve F d₂ m✝¹.last i (MeasureSet.set ms✝ h_non_empty✝)

h_ml: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.set (dedup F (List.map (fun m' => Meas.concat F m✝¹ m') ms✝)) (_ : dedup F (List.map (fun m' => Meas.concat F m✝¹ m') ms✝) [])) (MeasureSet.tainted m✝)


set
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m✝¹: Meas

msr': MeasureSet

h_transfer: ∀ (x : Meas), x m✝¹ :: ms✝x orig_ms

h_current: ResolveConcatOne F d₂ m✝¹ i msr'

m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

h_ml: MeasureSet.tainted m = MeasureSet.union F msr' (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝¹: List Meas

m✝¹: Meas

h_transfer: ∀ (x : Meas), x m✝¹ :: ms✝¹x orig_ms

m✝: Meas

h_rest: ResolveConcat F ms✝¹ d₂ i (MeasureSet.tainted m✝)

ms✝: List Meas

h_non_empty✝: ms✝ []

h✝: Resolve F d₂ m✝¹.last i (MeasureSet.set ms✝ h_non_empty✝)

h_ml: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.set (dedup F (List.map (fun m' => Meas.concat F m✝¹ m') ms✝)) (_ : dedup F (List.map (fun m' => Meas.concat F m✝¹ m') ms✝) [])) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m✝¹: Meas

msr': MeasureSet

h_transfer: ∀ (x : Meas), x m✝¹ :: ms✝x orig_ms

h_current: ResolveConcatOne F d₂ m✝¹ i msr'

m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

h_ml: MeasureSet.tainted m = MeasureSet.union F msr' (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m✝¹: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m: Meas

h_transfer: ∀ (x : Meas), x m :: ms✝x orig_ms

m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

m'✝: Meas

h_current: Resolve F d₂ m.last i (MeasureSet.tainted m'✝)

h_ml: MeasureSet.tainted m✝¹ = MeasureSet.union F (MeasureSet.tainted (Meas.concat F m m'✝)) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m✝¹
α✝: Type

F: Factory α✝

d₂: Doc

i:

m✝¹: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m: Meas

h_transfer: ∀ (x : Meas), x m :: ms✝x orig_ms

m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

m'✝: Meas

h_current: Resolve F d₂ m.last i (MeasureSet.tainted m'✝)

h_ml: MeasureSet.tainted m✝¹ = MeasureSet.union F (MeasureSet.tainted (Meas.concat F m m'✝)) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m✝¹

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d₂: Doc

i:

m✝¹: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m: Meas

h_transfer: ∀ (x : Meas), x m :: ms✝x orig_ms

m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

m'✝: Meas

h_current: Resolve F d₂ m.last i (MeasureSet.tainted m'✝)

h_ml: MeasureSet.tainted m✝¹ = MeasureSet.union F (MeasureSet.tainted (Meas.concat F m m'✝)) (MeasureSet.tainted m✝)


m m :: ms✝

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d₂: Doc

i:

m✝¹: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m, m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

m'✝: Meas

h_current: Resolve F d₂ m.last i (MeasureSet.tainted m'✝)

h_ml: MeasureSet.tainted m✝¹ = MeasureSet.union F (MeasureSet.tainted (Meas.concat F m m'✝)) (MeasureSet.tainted m✝)

h_transfer: m orig_ms


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m✝¹
α✝: Type

F: Factory α✝

d₂: Doc

i:

m✝¹: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m: Meas

h_transfer: ∀ (x : Meas), x m :: ms✝x orig_ms

m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

m'✝: Meas

h_current: Resolve F d₂ m.last i (MeasureSet.tainted m'✝)

h_ml: MeasureSet.tainted m✝¹ = MeasureSet.union F (MeasureSet.tainted (Meas.concat F m m'✝)) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m✝¹
α✝: Type

F: Factory α✝

d₂: Doc

i:

m✝¹: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m, m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

m'✝: Meas

h_current: Resolve F d₂ m.last i (MeasureSet.tainted m'✝)

h_transfer: m orig_ms

h_ml: m✝¹ = Meas.concat F m m'✝


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m✝¹
α✝: Type

F: Factory α✝

d₂: Doc

i:

m✝¹: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m: Meas

h_transfer: ∀ (x : Meas), x m :: ms✝x orig_ms

m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

m'✝: Meas

h_current: Resolve F d₂ m.last i (MeasureSet.tainted m'✝)

h_ml: MeasureSet.tainted m✝¹ = MeasureSet.union F (MeasureSet.tainted (Meas.concat F m m'✝)) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m✝¹
α✝: Type

F: Factory α✝

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m, m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

m'✝: Meas

h_current: Resolve F d₂ m.last i (MeasureSet.tainted m'✝)

h_transfer: m orig_ms


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i (Meas.concat F m m'✝)
α✝: Type

F: Factory α✝

d₂: Doc

i:

m✝¹: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m: Meas

h_transfer: ∀ (x : Meas), x m :: ms✝x orig_ms

m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

m'✝: Meas

h_current: Resolve F d₂ m.last i (MeasureSet.tainted m'✝)

h_ml: MeasureSet.tainted m✝¹ = MeasureSet.union F (MeasureSet.tainted (Meas.concat F m m'✝)) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m✝¹
α✝: Type

F: Factory α✝

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m, m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

m'✝: Meas

h_current: Resolve F d₂ m.last i (MeasureSet.tainted m'✝)

h_transfer: m orig_ms

d_left: Doc

left✝: d_left L₁

h₁: MeasRender F d_left c i m


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i (Meas.concat F m m'✝)
α✝: Type

F: Factory α✝

d₂: Doc

i:

m✝¹: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m: Meas

h_transfer: ∀ (x : Meas), x m :: ms✝x orig_ms

m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

m'✝: Meas

h_current: Resolve F d₂ m.last i (MeasureSet.tainted m'✝)

h_ml: MeasureSet.tainted m✝¹ = MeasureSet.union F (MeasureSet.tainted (Meas.concat F m m'✝)) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m✝¹
α✝: Type

F: Factory α✝

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m, m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

m'✝: Meas

h_current: Resolve F d₂ m.last i (MeasureSet.tainted m'✝)

h_transfer: m orig_ms

d_left: Doc

left✝¹: d_left L₁

h₁: MeasRender F d_left c i m

d_right: Doc

left✝: d_right L₂

h₂: MeasRender F d_right m.last i m'✝


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i (Meas.concat F m m'✝)
α✝: Type

F: Factory α✝

d₂: Doc

i:

m✝¹: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m: Meas

h_transfer: ∀ (x : Meas), x m :: ms✝x orig_ms

m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

m'✝: Meas

h_current: Resolve F d₂ m.last i (MeasureSet.tainted m'✝)

h_ml: MeasureSet.tainted m✝¹ = MeasureSet.union F (MeasureSet.tainted (Meas.concat F m m'✝)) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m✝¹
α✝: Type

F: Factory α✝

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m, m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

m'✝: Meas

h_current: Resolve F d₂ m.last i (MeasureSet.tainted m'✝)

h_transfer: m orig_ms

d_left: Doc

left✝¹: d_left L₁

h₁: MeasRender F d_left c i m

d_right: Doc

left✝: d_right L₂

h₂: MeasRender F d_right m.last i m'✝


Doc.concat d_left d_right List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F (Doc.concat d_left d_right) c i (Meas.concat F m m'✝)
α✝: Type

F: Factory α✝

d₂: Doc

i:

m✝¹: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m: Meas

h_transfer: ∀ (x : Meas), x m :: ms✝x orig_ms

m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

m'✝: Meas

h_current: Resolve F d₂ m.last i (MeasureSet.tainted m'✝)

h_ml: MeasureSet.tainted m✝¹ = MeasureSet.union F (MeasureSet.tainted (Meas.concat F m m'✝)) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m✝¹
α✝: Type

F: Factory α✝

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m, m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

m'✝: Meas

h_current: Resolve F d₂ m.last i (MeasureSet.tainted m'✝)

h_transfer: m orig_ms

d_left: Doc

left✝¹: d_left L₁

h₁: MeasRender F d_left c i m

d_right: Doc

left✝: d_right L₂

h₂: MeasRender F d_right m.last i m'✝


MeasRender F (Doc.concat d_left d_right) c i (Meas.concat F m m'✝)
α✝: Type

F: Factory α✝

d₂: Doc

i:

m✝¹: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m: Meas

h_transfer: ∀ (x : Meas), x m :: ms✝x orig_ms

m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

m'✝: Meas

h_current: Resolve F d₂ m.last i (MeasureSet.tainted m'✝)

h_ml: MeasureSet.tainted m✝¹ = MeasureSet.union F (MeasureSet.tainted (Meas.concat F m m'✝)) (MeasureSet.tainted m✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m✝¹
α✝: Type

F: Factory α✝

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m, m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

m'✝: Meas

h_current: Resolve F d₂ m.last i (MeasureSet.tainted m'✝)

h_transfer: m orig_ms

d_left: Doc

left✝¹: d_left L₁

h₁: MeasRender F d_left c i m

d_right: Doc

left✝: d_right L₂

h₂: MeasRender F d_right m.last i m'✝


MeasRender F (Doc.concat d_left d_right) c i (Meas.concat F m m'✝)
α✝: Type

F: Factory α✝

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m, m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

m'✝: Meas

h_current: Resolve F d₂ m.last i (MeasureSet.tainted m'✝)

h_transfer: m orig_ms

d_left: Doc

left✝¹: d_left L₁

h₁: MeasRender F d_left c i m

d_right: Doc

left✝: d_right L₂

h₂: MeasRender F d_right m.last i m'✝


h₁
MeasRender F d_left c i ?m₁
α✝: Type

F: Factory α✝

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m, m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

m'✝: Meas

h_current: Resolve F d₂ m.last i (MeasureSet.tainted m'✝)

h_transfer: m orig_ms

d_left: Doc

left✝¹: d_left L₁

h₁: MeasRender F d_left c i m

d_right: Doc

left✝: d_right L₂

h₂: MeasRender F d_right m.last i m'✝


h₂
MeasRender F d_right ?m₁.last i ?m₂
α✝: Type

F: Factory α✝

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m, m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

m'✝: Meas

h_current: Resolve F d₂ m.last i (MeasureSet.tainted m'✝)

h_transfer: m orig_ms

d_left: Doc

left✝¹: d_left L₁

h₁: MeasRender F d_left c i m

d_right: Doc

left✝: d_right L₂

h₂: MeasRender F d_right m.last i m'✝


h
Meas.concat F m m'✝ = Meas.concat F ?m₁ ?m₂
α✝: Type

F: Factory α✝

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m, m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

m'✝: Meas

h_current: Resolve F d₂ m.last i (MeasureSet.tainted m'✝)

h_transfer: m orig_ms

d_left: Doc

left✝¹: d_left L₁

h₁: MeasRender F d_left c i m

d_right: Doc

left✝: d_right L₂

h₂: MeasRender F d_right m.last i m'✝


m₁
Meas
α✝: Type

F: Factory α✝

d₂: Doc

i:

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

m, m✝: Meas

h_rest: ResolveConcat F ms✝ d₂ i (MeasureSet.tainted m✝)

m'✝: Meas

h_current: Resolve F d₂ m.last i (MeasureSet.tainted m'✝)

h_transfer: m orig_ms

d_left: Doc

left✝¹: d_left L₁

h₁: MeasRender F d_left c i m

d_right: Doc

left✝: d_right L₂

h₂: MeasRender F d_right m.last i m'✝


m₂
Meas

Goals accomplished! 🐙
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝: List Meas

msr: MeasureSet

m✝: Meas

msr': MeasureSet

h_transfer: ∀ (x : Meas), x m✝ :: ms✝x orig_ms

h_rest: ResolveConcat F ms✝ d₂ i msr

h_current: ResolveConcatOne F d₂ m✝ i msr'

h_ml: MeasureSet.tainted m = MeasureSet.union F msr' msr


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝¹: List Meas

m✝: Meas

msr': MeasureSet

h_transfer: ∀ (x : Meas), x m✝ :: ms✝¹x orig_ms

h_current: ResolveConcatOne F d₂ m✝ i msr'

ms✝: List Meas

h✝: ms✝ []

h_rest: ResolveConcat F ms✝¹ d₂ i (MeasureSet.set ms✝ h✝)

h_ml: MeasureSet.tainted m = MeasureSet.union F msr' (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝¹: List Meas

m✝¹: Meas

h_transfer: ∀ (x : Meas), x m✝¹ :: ms✝¹x orig_ms

ms✝: List Meas

h✝: ms✝ []

h_rest: ResolveConcat F ms✝¹ d₂ i (MeasureSet.set ms✝ h✝)

m✝: Meas

h_current: ResolveConcatOne F d₂ m✝¹ i (MeasureSet.tainted m✝)

h_ml: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.tainted m✝) (MeasureSet.set ms✝ h✝)


tainted
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝²: List Meas

m✝: Meas

h_transfer: ∀ (x : Meas), x m✝ :: ms✝²x orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F ms✝² d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m✝ i (MeasureSet.set ms✝ h✝)

h_ml: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.set ms✝ h✝) (MeasureSet.set ms✝¹ h✝¹)


set
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝¹: List Meas

m✝: Meas

msr': MeasureSet

h_transfer: ∀ (x : Meas), x m✝ :: ms✝¹x orig_ms

h_current: ResolveConcatOne F d₂ m✝ i msr'

ms✝: List Meas

h✝: ms✝ []

h_rest: ResolveConcat F ms✝¹ d₂ i (MeasureSet.set ms✝ h✝)

h_ml: MeasureSet.tainted m = MeasureSet.union F msr' (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝¹: List Meas

m✝¹: Meas

h_transfer: ∀ (x : Meas), x m✝¹ :: ms✝¹x orig_ms

ms✝: List Meas

h✝: ms✝ []

h_rest: ResolveConcat F ms✝¹ d₂ i (MeasureSet.set ms✝ h✝)

m✝: Meas

h_current: ResolveConcatOne F d₂ m✝¹ i (MeasureSet.tainted m✝)

h_ml: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.tainted m✝) (MeasureSet.set ms✝ h✝)


tainted
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝²: List Meas

m✝: Meas

h_transfer: ∀ (x : Meas), x m✝ :: ms✝²x orig_ms

ms✝¹: List Meas

h✝¹: ms✝¹ []

h_rest: ResolveConcat F ms✝² d₂ i (MeasureSet.set ms✝¹ h✝¹)

ms✝: List Meas

h✝: ms✝ []

h_current: ResolveConcatOne F d₂ m✝ i (MeasureSet.set ms✝ h✝)

h_ml: MeasureSet.tainted m = MeasureSet.union F (MeasureSet.set ms✝ h✝) (MeasureSet.set ms✝¹ h✝¹)


set
d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m
α✝: Type

F: Factory α✝

d₂: Doc

i:

m: Meas

d₁: Doc

L₁, L₂: List Doc

c:

orig_ms: List Meas

h_non_empty: orig_ms []

h_widen₁: Widen d₁ L₁

h_widen₂: Widen d₂ L₂

h_left: Resolve F d₁ c i (MeasureSet.set orig_ms h_non_empty)

ms✝¹: List Meas

m✝: Meas

msr': MeasureSet

h_transfer: ∀ (x : Meas), x m✝ :: ms✝¹x orig_ms

h_current: ResolveConcatOne F d₂ m✝ i msr'

ms✝: List Meas

h✝: ms✝ []

h_rest: ResolveConcat F ms✝¹ d₂ i (MeasureSet.set ms✝ h✝)

h_ml: MeasureSet.tainted m = MeasureSet.union F msr' (MeasureSet.set ms✝ h✝)


d_choiceless, d_choiceless List.join (List.map (fun d₁ => List.map (fun d₂ => Doc.concat d₁ d₂) L₂) L₁) MeasRender F d_choiceless c i m

Goals accomplished! 🐙
end termination_by ResolveConcat_tainted_valid => (
d₁: Doc
d₁
.
size: Doc
size
+
d₂: Doc
d₂
.
size: Doc
size
+
1: ?m.597808
1
,
0: ?m.597886
0
,
ms: List Meas
ms
.
length: {α : Type ?u.597896} → List α
length
) Resolve_tainted_valid => (
d: Doc
d
.
size: Doc
size
,
1: ?m.597422
1
,
0: ?m.597433
0
)